Update web-platform-tests to revision bf42dca1ce568ce559d5a4cad507239035b91dcb

This commit is contained in:
WPT Sync Bot 2019-09-14 10:23:31 +00:00
parent 91d2bd3d64
commit 20e57b5c74
81 changed files with 3616 additions and 289 deletions

View file

@ -7,7 +7,7 @@
expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.]
expected: FAIL
expected: TIMEOUT
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: FAIL

View file

@ -14329,6 +14329,12 @@
{}
]
],
"payment-handler/supports-shipping-contact-delegation-manual.https.html": [
[
"payment-handler/supports-shipping-contact-delegation-manual.https.html",
{}
]
],
"payment-method-basic-card/empty-data-manual.https.html": [
[
"payment-method-basic-card/empty-data-manual.https.html",
@ -67515,6 +67521,18 @@
{}
]
],
"css/CSS2/normal-flow/child-bottom-margin-in-unresolvable-percentage-height.html": [
[
"css/CSS2/normal-flow/child-bottom-margin-in-unresolvable-percentage-height.html",
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"css/CSS2/normal-flow/dynamic-percentage-height.html": [
[
"css/CSS2/normal-flow/dynamic-percentage-height.html",
@ -121887,6 +121905,18 @@
{}
]
],
"css/css-flexbox/percentage-heights-007.html": [
[
"css/css-flexbox/percentage-heights-007.html",
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"css/css-flexbox/percentage-size-subitems-001.html": [
[
"css/css-flexbox/percentage-size-subitems-001.html",
@ -205407,6 +205437,18 @@
{}
]
],
"mathml/presentation-markup/fractions/frac-bar-002.html": [
[
"mathml/presentation-markup/fractions/frac-bar-002.html",
[
[
"/mathml/presentation-markup/fractions/frac-bar-002-ref.html",
"=="
]
],
{}
]
],
"mathml/presentation-markup/fractions/frac-color-001.html": [
[
"mathml/presentation-markup/fractions/frac-color-001.html",
@ -205467,6 +205509,18 @@
{}
]
],
"mathml/presentation-markup/fractions/frac-default-padding.html": [
[
"mathml/presentation-markup/fractions/frac-default-padding.html",
[
[
"/mathml/presentation-markup/fractions/frac-default-padding-ref.html",
"=="
]
],
{}
]
],
"mathml/presentation-markup/fractions/frac-linethickness-001.html": [
[
"mathml/presentation-markup/fractions/frac-linethickness-001.html",
@ -205700,7 +205754,7 @@
"mathml/presentation-markup/operators/mo-movablelimits-from-in-flow.html",
[
[
"/mathml/presentation-markup/operators/mo-movablelimits-ref.html",
"/mathml/presentation-markup/operators/mo-movablelimits-from-in-flow-ref.html",
"=="
]
],
@ -273900,12 +273954,18 @@
"html/semantics/forms/autofocus/resources/child-autofocus.html": [
[]
],
"html/semantics/forms/autofocus/resources/child-iframe.html": [
[]
],
"html/semantics/forms/autofocus/resources/erase-first.css": [
[]
],
"html/semantics/forms/autofocus/resources/frame-with-autofocus-element.html": [
[]
],
"html/semantics/forms/autofocus/resources/grand-child-autofocus.html": [
[]
],
"html/semantics/forms/autofocus/resources/moving-autofocus-to-parent.html": [
[]
],
@ -275541,18 +275601,12 @@
"infrastructure/metadata/infrastructure/reftest/reftest_timeout.html.ini": [
[]
],
"infrastructure/metadata/infrastructure/reftest/size.html.ini": [
[]
],
"infrastructure/metadata/infrastructure/server/context.any.js.ini": [
[]
],
"infrastructure/metadata/infrastructure/server/order-of-metas.any.js.ini": [
[]
],
"infrastructure/metadata/infrastructure/server/order-of-metas.window.js.ini": [
[]
],
"infrastructure/metadata/infrastructure/server/secure-context.https.any.js.ini": [
[]
],
@ -276264,6 +276318,9 @@
"mathml/presentation-markup/fractions/frac-bar-001-ref.html": [
[]
],
"mathml/presentation-markup/fractions/frac-bar-002-ref.html": [
[]
],
"mathml/presentation-markup/fractions/frac-color-001-notref.html": [
[]
],
@ -276279,6 +276336,9 @@
"mathml/presentation-markup/fractions/frac-created-dynamically-ref.html": [
[]
],
"mathml/presentation-markup/fractions/frac-default-padding-ref.html": [
[]
],
"mathml/presentation-markup/fractions/frac-linethickness-001-ref.html": [
[]
],
@ -277788,6 +277848,9 @@
"payment-handler/app-change-payment-method.js": [
[]
],
"payment-handler/app-supports-shipping-contact-delegation.js": [
[]
],
"payment-handler/basic-card.js": [
[]
],
@ -316235,9 +316298,9 @@
{}
]
],
"css/css-color-adjust/parsing/color-scheme-computed.tentative.html": [
"css/css-color-adjust/parsing/color-scheme-computed.html": [
[
"css/css-color-adjust/parsing/color-scheme-computed.tentative.html",
"css/css-color-adjust/parsing/color-scheme-computed.html",
{}
]
],
@ -322607,9 +322670,39 @@
{}
]
],
"css/css-scroll-snap/snap-to-visible-areas.html": [
"css/css-scroll-snap/snap-to-visible-areas-both.html": [
[
"css/css-scroll-snap/snap-to-visible-areas.html",
"css/css-scroll-snap/snap-to-visible-areas-both.html",
{}
]
],
"css/css-scroll-snap/snap-to-visible-areas-margin-both.html": [
[
"css/css-scroll-snap/snap-to-visible-areas-margin-both.html",
{}
]
],
"css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.html": [
[
"css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.html",
{}
]
],
"css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.html": [
[
"css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.html",
{}
]
],
"css/css-scroll-snap/snap-to-visible-areas-x-axis.html": [
[
"css/css-scroll-snap/snap-to-visible-areas-x-axis.html",
{}
]
],
"css/css-scroll-snap/snap-to-visible-areas-y-axis.html": [
[
"css/css-scroll-snap/snap-to-visible-areas-y-axis.html",
{}
]
],
@ -325835,6 +325928,12 @@
{}
]
],
"css/css-text/line-breaking/line-breaking-020.html": [
[
"css/css-text/line-breaking/line-breaking-020.html",
{}
]
],
"css/css-text/overflow-wrap/overflow-wrap-anywhere-span-002.html": [
[
"css/css-text/overflow-wrap/overflow-wrap-anywhere-span-002.html",
@ -358663,6 +358762,14 @@
{}
]
],
"html/semantics/forms/autofocus/same-origin-autofocus.html": [
[
"html/semantics/forms/autofocus/same-origin-autofocus.html",
{
"testdriver": true
}
]
],
"html/semantics/forms/autofocus/skip-another-top-level-browsing-context.html": [
[
"html/semantics/forms/autofocus/skip-another-top-level-browsing-context.html",
@ -363945,6 +364052,12 @@
{}
]
],
"html/webappapis/dynamic-markup-insertion/closing-the-input-stream/document-close-with-pending-script.html": [
[
"html/webappapis/dynamic-markup-insertion/closing-the-input-stream/document-close-with-pending-script.html",
{}
]
],
"html/webappapis/dynamic-markup-insertion/closing-the-input-stream/document.close-01.xhtml": [
[
"html/webappapis/dynamic-markup-insertion/closing-the-input-stream/document.close-01.xhtml",
@ -367018,6 +367131,18 @@
{}
]
],
"largest-contentful-paint/image-inside-svg.html": [
[
"largest-contentful-paint/image-inside-svg.html",
{}
]
],
"largest-contentful-paint/image-not-fully-visible.html": [
[
"largest-contentful-paint/image-not-fully-visible.html",
{}
]
],
"largest-contentful-paint/image-src-change.html": [
[
"largest-contentful-paint/image-src-change.html",
@ -367589,6 +367714,18 @@
{}
]
],
"mathml/presentation-markup/tables/table-001.html": [
[
"mathml/presentation-markup/tables/table-001.html",
{}
]
],
"mathml/presentation-markup/tables/table-002.html": [
[
"mathml/presentation-markup/tables/table-002.html",
{}
]
],
"mathml/presentation-markup/tables/table-axis-height.html": [
[
"mathml/presentation-markup/tables/table-axis-height.html",
@ -367625,6 +367762,12 @@
{}
]
],
"mathml/relations/css-styling/ignored-properties-001.html": [
[
"mathml/relations/css-styling/ignored-properties-001.html",
{}
]
],
"mathml/relations/css-styling/lengths-2.html": [
[
"mathml/relations/css-styling/lengths-2.html",
@ -513300,6 +513443,10 @@
"b3a7420c630ad4c84e5593ad48f48f3072a88b98",
"visual"
],
"css/CSS2/normal-flow/child-bottom-margin-in-unresolvable-percentage-height.html": [
"6c075f7ac779ef735705aa06e4418a863c2ac1d7",
"reftest"
],
"css/CSS2/normal-flow/containing-block-percent-margin-bottom.html": [
"9dfc1963ac8a3bbccdd317e2b21613d08db21452",
"testharness"
@ -547336,7 +547483,7 @@
"f7f6529349bf1ba0436e2d1165a81552de95ffaa",
"testharness"
],
"css/css-color-adjust/parsing/color-scheme-computed.tentative.html": [
"css/css-color-adjust/parsing/color-scheme-computed.html": [
"80b9803981f7123d22c637ee9056c04ba3108818",
"testharness"
],
@ -554860,6 +555007,10 @@
"5633dba3bdb63188d5ce10112d22b69bb5eb21a3",
"reftest"
],
"css/css-flexbox/percentage-heights-007.html": [
"1318933952c99e9bb142f74110cbc388e6dda6c4",
"reftest"
],
"css/css-flexbox/percentage-size-subitems-001.html": [
"70f3953052a3a770c6cd15ee169607a00fc452b0",
"reftest"
@ -556725,7 +556876,7 @@
"testharness"
],
"css/css-fonts/parsing/font-computed.html": [
"b3f104e62439d48d167559cfd2aeb5e509991f82",
"ab2694d211468b62b7d82d8ec353005d058b4f24",
"testharness"
],
"css/css-fonts/parsing/font-family-computed.html": [
@ -556753,7 +556904,7 @@
"testharness"
],
"css/css-fonts/parsing/font-invalid.html": [
"d6db9338aa2adf5945fd88e29bdd9376e2efe1d1",
"950747580e8bc0fb46c919669977681fe308d805",
"testharness"
],
"css/css-fonts/parsing/font-kerning-computed.html": [
@ -556829,7 +556980,7 @@
"testharness"
],
"css/css-fonts/parsing/font-valid.html": [
"769e6b42eae37a864fec6577614917f7b1fd7667",
"896be89741bd14acd961398791f62db3ec876c8d",
"testharness"
],
"css/css-fonts/parsing/font-variant-caps-computed.html": [
@ -572597,7 +572748,7 @@
"testharness"
],
"css/css-position/position-absolute-replaced-minmax.html": [
"644b147a227e100c500de2de9e4f8e8449a4a21e",
"ff6757aeea32a875f0f7a7a7d38cf7da5bc1066c",
"testharness"
],
"css/css-position/position-fixed-at-bottom-right-on-viewport.html": [
@ -573249,7 +573400,7 @@
"reftest"
],
"css/css-pseudo/first-letter-property-whitelist.html": [
"e3b3f532fefe0ed88b01e19457a747bd3013ac21",
"9ad7b31c3621b3c5fc7a9e2ec0eb35895c9f9eae",
"testharness"
],
"css/css-pseudo/first-letter-width-ref.html": [
@ -576416,8 +576567,28 @@
"2a4402579cf06ffb2f5611dfd6207fabcb8bdafe",
"testharness"
],
"css/css-scroll-snap/snap-to-visible-areas.html": [
"3e822db02e675a3a8799f69f86d2bc93507c7547",
"css/css-scroll-snap/snap-to-visible-areas-both.html": [
"da10f982f1f2dc3a764291ede3c2f13560e36082",
"testharness"
],
"css/css-scroll-snap/snap-to-visible-areas-margin-both.html": [
"f148036a1d5d7165ffc085b2c4f6d49ae64fe9af",
"testharness"
],
"css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.html": [
"dea9225a4728e10288d1af607961db855dcff169",
"testharness"
],
"css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.html": [
"60c548844500397631cae018b32033ea3cc302ae",
"testharness"
],
"css/css-scroll-snap/snap-to-visible-areas-x-axis.html": [
"b8b226f1afecc5f0b9c01ef462fb5267682b739f",
"testharness"
],
"css/css-scroll-snap/snap-to-visible-areas-y-axis.html": [
"80d2e9946de8827d9d53686f6c9b4abea2e27592",
"testharness"
],
"css/css-scroll-snap/support/scroll-target-align-001-iframe.html": [
@ -583180,6 +583351,10 @@
"e755eff38133b6db65e9902a94047b120cf81dd1",
"reftest"
],
"css/css-text/line-breaking/line-breaking-020.html": [
"7c8d0f119edb5ef768b37a5a41b8df9bb9e59600",
"testharness"
],
"css/css-text/line-breaking/line-breaking-atomic-001.html": [
"e071378c95fd436484a3056ecb2ba6ff35ddbaae",
"reftest"
@ -606509,7 +606684,7 @@
"testharness"
],
"css/cssom/font-shorthand-serialization.html": [
"6f6834a7509d0f58d37f40d6a6e45226f2e54092",
"29082f83eaf75a0831e5175b8b1217c4ecf4ebcd",
"testharness"
],
"css/cssom/getComputedStyle-detached-subtree.html": [
@ -608349,7 +608524,7 @@
"testharness"
],
"css/motion/animation/offset-interpolation.html": [
"0d1ba1c8875ca1d76e52a01a655037cad6f8eff9",
"04f4d4b3bd78f95939c34aa098b85a7947d4fcbd",
"testharness"
],
"css/motion/animation/offset-path-interpolation-001.html": [
@ -622141,7 +622316,7 @@
"testharness"
],
"dom/nodes/aria-element-reflection.tentative.html": [
"974727f92aa315d727295fcf7b650bc24c507aab",
"848828810f160d5ac01f11bf41b27230b9738800",
"testharness"
],
"dom/nodes/attributes.html": [
@ -633309,7 +633484,7 @@
"testharness"
],
"html/dom/elements/global-attributes/dataset-set.html": [
"722b17977e412a3c504fe708841ff273cf76e9e0",
"dbce5de309a1d0b4c70305b13540851a67c0ce91",
"testharness"
],
"html/dom/elements/global-attributes/dataset.html": [
@ -643576,6 +643751,10 @@
"afd5601a523ff0a1d60d37b171b2098a38600ace",
"support"
],
"html/semantics/forms/autofocus/resources/child-iframe.html": [
"2645a180e4866ed9d1f0a107fc912d53b7437247",
"support"
],
"html/semantics/forms/autofocus/resources/erase-first.css": [
"bbbcf799393fc047dae6d47836c3696868df8fb7",
"support"
@ -643584,6 +643763,10 @@
"985cba41494919525031081d236e4409aace453c",
"support"
],
"html/semantics/forms/autofocus/resources/grand-child-autofocus.html": [
"88be6e0b04a99b8477925107e1f534024f021b5e",
"support"
],
"html/semantics/forms/autofocus/resources/moving-autofocus-to-parent.html": [
"fc6c298a46e376cf45089f168cf841cab59ffd5c",
"support"
@ -643592,6 +643775,10 @@
"0eeb5a9f0adf1d09959227241cd71fe32ebb485c",
"support"
],
"html/semantics/forms/autofocus/same-origin-autofocus.html": [
"9cfcdb925cf16cc883ac37f126dc40673066a8b0",
"testharness"
],
"html/semantics/forms/autofocus/skip-another-top-level-browsing-context.html": [
"d392b903f075276a03189207e57d789608523de1",
"testharness"
@ -643605,7 +643792,7 @@
"testharness"
],
"html/semantics/forms/autofocus/skip-not-fully-active.html": [
"32008b3019e905488c35ea432de396a2641cb61a",
"104dd5a4a5e371bf5002c7435e718d8e032fff5a",
"testharness"
],
"html/semantics/forms/autofocus/spin-by-blocking-style-sheet.html": [
@ -648488,6 +648675,10 @@
"c522afdd56c7ca0ef16094b9bd98c6bda5becefe",
"testharness"
],
"html/webappapis/dynamic-markup-insertion/closing-the-input-stream/document-close-with-pending-script.html": [
"1584ca5f97279f157dce9ba1c89cc342f3a427a5",
"testharness"
],
"html/webappapis/dynamic-markup-insertion/closing-the-input-stream/document.close-01.xhtml": [
"cccc26bf17e3afe04cdad59cf2cf325ead1fb581",
"testharness"
@ -650421,7 +650612,7 @@
"testharness"
],
"infrastructure/metadata/infrastructure/assumptions/allowed-to-play.html.ini": [
"f9be6a64bdfd7ca033fda2a9cd1bdb105836df20",
"c9fbabede6d695cd3795e4390b35da0454ffcc34",
"support"
],
"infrastructure/metadata/infrastructure/assumptions/document-fonts-ready.html.ini": [
@ -650429,7 +650620,7 @@
"support"
],
"infrastructure/metadata/infrastructure/assumptions/html-elements.html.ini": [
"4be883a5cf7ab6869e2e9235acca37549a9045b8",
"67caa470342db6d2b46dab28464f2491f84dd7b2",
"support"
],
"infrastructure/metadata/infrastructure/browsers/firefox/__dir__.ini": [
@ -650492,28 +650683,20 @@
"0d1b9bade95d7b101c8dbf51547ffbaec2260c27",
"support"
],
"infrastructure/metadata/infrastructure/reftest/size.html.ini": [
"1c6cd9eff891b315fcbe4bfcded859259d50e509",
"support"
],
"infrastructure/metadata/infrastructure/server/context.any.js.ini": [
"9667d4d251e8b1915ae2c979766343babd3a0235",
"c3431d687b60aa1a07d9a4307ccfd4a2253ee162",
"support"
],
"infrastructure/metadata/infrastructure/server/order-of-metas.any.js.ini": [
"a62ae82b9bec778832cea5e3a95ea069b11b49fc",
"support"
],
"infrastructure/metadata/infrastructure/server/order-of-metas.window.js.ini": [
"20e4cbad939b92111c17bdf0d5fdb58d379cf8df",
"8db9536e38cc880865c374f3743d7df9f727a530",
"support"
],
"infrastructure/metadata/infrastructure/server/secure-context.https.any.js.ini": [
"0a602b9ae264d92c75a06e79085c20faf4a65e5d",
"5f5ed991cf1b04da84e89d7eae2e0d80b9fd2841",
"support"
],
"infrastructure/metadata/infrastructure/server/title.any.js.ini": [
"6f7fed9dc062dbde3d73ea233f18f0f56d8e056c",
"e2a7b5578c3b0dec13206ec60da2a5c018c23eb1",
"support"
],
"infrastructure/metadata/infrastructure/server/wpt-server-http.sub.html.ini": [
@ -650549,7 +650732,7 @@
"support"
],
"infrastructure/metadata/infrastructure/testdriver/file_upload.sub.html.ini": [
"a39640b714b838a391f227ac58278ba991fbce66",
"e2bfbf8fb8fb71003bd06a8356fec3a074395040",
"support"
],
"infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini": [
@ -651153,7 +651336,7 @@
"support"
],
"interfaces/mediacapture-streams.idl": [
"d83777c5d293d04931e1d3ff9611a183e74bd142",
"e82bf36f3d79028dd21ff225c5ee46c9e1578b0a",
"support"
],
"interfaces/mediasession.idl": [
@ -651928,6 +652111,14 @@
"41c8c748619aea00c2afe67dd5983ab7601121b0",
"testharness"
],
"largest-contentful-paint/image-inside-svg.html": [
"5fff9e47f6424284fd707e276a68fa1f302d781c",
"testharness"
],
"largest-contentful-paint/image-not-fully-visible.html": [
"cec488c1c899d3d8b7ad9fbd306ec6cd92ecc416",
"testharness"
],
"largest-contentful-paint/image-src-change.html": [
"5ec860fa06f3281fd421912298e7b2c93dae19bb",
"testharness"
@ -652364,6 +652555,14 @@
"9fc441230588216f5f5b20eab36b465c48cbb41b",
"reftest"
],
"mathml/presentation-markup/fractions/frac-bar-002-ref.html": [
"9d5eef896ab6cab04be090ce970cb7d2347a9fca",
"support"
],
"mathml/presentation-markup/fractions/frac-bar-002.html": [
"ccf1bd904e77bf04c71fcab760a708f5aaaeed04",
"reftest"
],
"mathml/presentation-markup/fractions/frac-color-001-notref.html": [
"498d6277a3258c70882e7b2ec92e82e974bf9ab0",
"support"
@ -652404,6 +652603,14 @@
"b74338a8804ed4e71c99675035fa070159185905",
"reftest"
],
"mathml/presentation-markup/fractions/frac-default-padding-ref.html": [
"93d3e0162b6b634e012ac07915577bef38d46acb",
"support"
],
"mathml/presentation-markup/fractions/frac-default-padding.html": [
"b68bb873ced58ee1b4a349400b4e7520e5631d7d",
"reftest"
],
"mathml/presentation-markup/fractions/frac-linethickness-001-ref.html": [
"d4be8ea03bfc29506af0e26a3d94d5eeafaaf472",
"support"
@ -652593,7 +652800,7 @@
"support"
],
"mathml/presentation-markup/operators/mo-movablelimits-from-in-flow.html": [
"b36894e98f67929846224aaa56e9243fe1fc8646",
"d50cac50de3700a54df2df480f412cc269104efc",
"reftest"
],
"mathml/presentation-markup/operators/mo-movablelimits-ref.html": [
@ -652625,7 +652832,7 @@
"testharness"
],
"mathml/presentation-markup/scripts/cramped-001.html": [
"2be1c8ad2e8c17b3fcc0f857567fc7c18f040c16",
"d0e636c022ecae289a07533bd45aecb4ef89541f",
"testharness"
],
"mathml/presentation-markup/scripts/subsup-1.html": [
@ -652712,6 +652919,14 @@
"2ad6b0b772c39cad147604523409d85bee999564",
"testharness"
],
"mathml/presentation-markup/tables/table-001.html": [
"f967f62a22b2c731b0ad83ded970165539391abe",
"testharness"
],
"mathml/presentation-markup/tables/table-002.html": [
"f207bc03f5db20614d0e06b454fb9745290da558",
"testharness"
],
"mathml/presentation-markup/tables/table-axis-height.html": [
"f9354266a7c6c42a75519e9771eb2c61536ad8e5",
"testharness"
@ -652824,6 +653039,10 @@
"d28f66c3d5f628dd6b3150251c818a3c7d11df8f",
"reftest"
],
"mathml/relations/css-styling/ignored-properties-001.html": [
"7500c73a3f155022231200484229bf1457464798",
"testharness"
],
"mathml/relations/css-styling/lengths-1-ref.html": [
"9fca6f49632ca080ee1b2a32a9ce2d251241dfcc",
"support"
@ -653077,7 +653296,7 @@
"reftest"
],
"mathml/relations/css-styling/not-participating-to-parent-layout.html": [
"1caebf1e630de2fdc9c879aa76e0a4c666fbe841",
"6445cde9ac1697ac7316c2baed7981f9b96de93b",
"testharness"
],
"mathml/relations/css-styling/padding-border-margin/border-001.html": [
@ -653101,7 +653320,7 @@
"testharness"
],
"mathml/relations/css-styling/padding-border-margin/padding-002.html": [
"565dfc43b566b0a3c019437111ce21db7885c426",
"5bf9b6aec417a403e81401ec8163f2b234fde416",
"testharness"
],
"mathml/relations/css-styling/padding-border-margin/padding-border-margin-001-ref.html": [
@ -653333,7 +653552,7 @@
"support"
],
"mathml/support/mathml-fragments.js": [
"7c7b003e9e683a2770520eeb82a42a0dd1307c9f",
"8376ccf375def30bec02e4226ea189140efcbe65",
"support"
],
"mathml/tools/axisheight.py": [
@ -664408,6 +664627,10 @@
"0e5a4768e7626f666077e794e0731c9a1e3e9d35",
"support"
],
"payment-handler/app-supports-shipping-contact-delegation.js": [
"770e2de64f13eeef8a1ee21783c2997facc8ff0b",
"support"
],
"payment-handler/basic-card.js": [
"2db5d4b719fac4dbcfa65f4166c16a5b8d253097",
"support"
@ -664484,6 +664707,10 @@
"b9a9dd82d247a80b00e4bc033eeea134d5f900c1",
"testharness"
],
"payment-handler/supports-shipping-contact-delegation-manual.https.html": [
"75b3668981c900ecced0b1ffdd40a95f15125003",
"manual"
],
"payment-handler/untrusted-event.https.html": [
"900ac79d0d21f698707f6efe13a07dd234ed1a30",
"testharness"
@ -677545,7 +677772,7 @@
"support"
],
"resources/chromium/webxr-test.js": [
"894e2a24f653e150b738fc576135ed4871a3a644",
"eae4d64b446ecc53ac1ed5210b8ce2c783d08f9e",
"support"
],
"resources/chromium/webxr-test.js.headers": [
@ -677873,7 +678100,7 @@
"support"
],
"resources/test/tests/unit/test-return-restrictions.html": [
"8472ba9c9ed3f0baed605813fad1717769875759",
"b846d4dc4300a990edf7a905f301dcaf75bee18c",
"support"
],
"resources/test/tests/unit/unpaired-surrogates.html": [
@ -677917,7 +678144,7 @@
"support"
],
"resources/testharness.js": [
"21d5fcc9417f3324617516402afeb45878acd9cf",
"15591042aa4cb0fdd75fe3bf56b9bdfb63fd161d",
"support"
],
"resources/testharness.js.headers": [
@ -705289,7 +705516,7 @@
"support"
],
"webxr/resources/webxr_test_constants.js": [
"e0330b80f53398a9ac0cff9edee7b82cc560a8b5",
"dc60f6739d417448c252a93de0f1f61c063e5a35",
"support"
],
"webxr/resources/webxr_util.js": [
@ -705489,7 +705716,7 @@
"testharness"
],
"webxr/xrSession_visibilityState.https.html": [
"ebad10095e665cceee34d28004ebf25e06687eeb",
"e7a6041036f9d7c06133c602c976a87c8868dc3e",
"testharness"
],
"webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html": [
@ -705505,7 +705732,7 @@
"testharness"
],
"webxr/xrView_oneframeupdate.https.html": [
"4386433788c55dd13bc9a663b6796530e4852368",
"8edb2c0b265f18479644f312f91478d6029e3cd5",
"testharness"
],
"webxr/xrView_sameObject.https.html": [

View file

@ -0,0 +1,2 @@
[percentage-heights-007.html]
expected: FAIL

View file

@ -944,3 +944,930 @@
[Property font value 'italic 100 normal small-caps 20%/1.2 sans-serif' computes to ['italic small-caps 100 normal 8px/1.2 sans-serif' or 'italic small-caps 100 normal 8px / 1.2 sans-serif'\]]
expected: FAIL
[Property font value 'normal normal small-caps 20%/1.2 serif' computes to 'small-caps 8px / 1.2 serif']
expected: FAIL
[Property font value 'italic normal expanded small-caps 20%/1.2 "Non-Generic Example Family Name"' computes to 'italic small-caps expanded 8px / 1.2 "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'normal italic normal 900 medium/normal Menu' computes to 'italic 900 16px Menu']
expected: FAIL
[Property font value 'small-caps lighter semi-condensed normal xx-small fantasy' computes to 'small-caps 700 semi-condensed 9.6px fantasy']
expected: FAIL
[Property font value 'italic semi-condensed bold small-caps xx-small Menu' computes to 'italic small-caps 700 semi-condensed 9.6px Menu']
expected: FAIL
[Property font value 'italic normal bold xx-small serif' computes to 'italic 700 9.6px serif']
expected: FAIL
[Property font value 'extra-expanded normal italic lighter larger/calc(120% + 1.2em) sans-serif' computes to 'italic 700 extra-expanded 48px / 115.2px sans-serif']
expected: FAIL
[Property font value 'normal semi-condensed small-caps 100 xx-small Menu' computes to 'small-caps 100 semi-condensed 9.6px Menu']
expected: FAIL
[Property font value 'italic normal small-caps extra-condensed calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to 'italic small-caps extra-condensed 0px / 0px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'xx-small serif' computes to '9.6px serif']
expected: FAIL
[Property font value 'italic normal normal calc(30% - 40px)/calc(120% + 1.2em) Menu' computes to 'italic 0px / 0px Menu']
expected: FAIL
[Property font value 'small-caps bold normal normal medium/normal fantasy' computes to 'small-caps 700 16px fantasy']
expected: FAIL
[Property font value 'italic condensed 900 normal calc(30% - 40px)/calc(120% + 1.2em) monospace' computes to 'italic 900 condensed 0px / 0px monospace']
expected: FAIL
[Property font value 'normal small-caps extra-expanded lighter xx-small sans-serif' computes to 'small-caps 700 extra-expanded 9.6px sans-serif']
expected: FAIL
[Property font value 'semi-expanded italic small-caps medium/normal sans-serif' computes to 'italic small-caps semi-expanded 16px sans-serif']
expected: FAIL
[Property font value 'bolder normal expanded italic 20%/1.2 Menu' computes to 'italic 900 expanded 8px / 1.2 Menu']
expected: FAIL
[Property font value 'ultra-condensed italic normal 10px/normal monospace' computes to 'italic ultra-condensed 10px monospace']
expected: FAIL
[Property font value 'normal small-caps semi-expanded normal 20%/1.2 "Non-Generic Example Family Name"' computes to 'small-caps semi-expanded 8px / 1.2 "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'italic semi-condensed normal normal xx-small monospace' computes to 'italic semi-condensed 9.6px monospace']
expected: FAIL
[Property font value 'extra-expanded normal normal larger/calc(120% + 1.2em) serif' computes to 'extra-expanded 48px / 115.2px serif']
expected: FAIL
[Property font value 'lighter ultra-condensed italic small-caps 10px/normal sans-serif' computes to 'italic small-caps 700 ultra-condensed 10px sans-serif']
expected: FAIL
[Property font value 'small-caps normal extra-condensed italic xx-large/1.2 cursive' computes to 'italic small-caps extra-condensed 32px / 1.2 cursive']
expected: FAIL
[Property font value 'extra-expanded 900 normal larger/calc(120% + 1.2em) Menu' computes to '900 extra-expanded 48px / 115.2px Menu']
expected: FAIL
[Property font value 'italic small-caps bolder 10px/normal "Non-Generic Example Family Name"' computes to 'italic small-caps 900 10px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value '900 normal normal small-caps xx-large/1.2 serif' computes to 'small-caps 900 32px / 1.2 serif']
expected: FAIL
[Property font value 'bolder small-caps italic expanded xx-large/1.2 monospace' computes to 'italic small-caps 900 expanded 32px / 1.2 monospace']
expected: FAIL
[Property font value 'bolder ultra-expanded italic normal smaller serif' computes to 'italic 900 ultra-expanded 33.3333px serif']
expected: FAIL
[Property font value '100 italic xx-small serif' computes to 'italic 100 9.6px serif']
expected: FAIL
[Property font value 'small-caps normal normal bolder 20%/1.2 monospace' computes to 'small-caps 900 8px / 1.2 monospace']
expected: FAIL
[Property font value 'small-caps italic normal semi-condensed xx-small sans-serif' computes to 'italic small-caps semi-condensed 9.6px sans-serif']
expected: FAIL
[Property font value 'condensed small-caps calc(30% - 40px)/calc(120% + 1.2em) serif' computes to 'small-caps condensed 0px / 0px serif']
expected: FAIL
[Property font value 'bold italic small-caps ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) serif' computes to 'italic small-caps 700 ultra-condensed 0px / 0px serif']
expected: FAIL
[Property font value 'ultra-expanded italic smaller fantasy' computes to 'italic ultra-expanded 33.3333px fantasy']
expected: FAIL
[Property font value 'italic small-caps semi-condensed 900 xx-large/1.2 monospace' computes to 'italic small-caps 900 semi-condensed 32px / 1.2 monospace']
expected: FAIL
[Property font value 'normal italic normal normal calc(30% - 40px)/calc(120% + 1.2em) fantasy' computes to 'italic 0px / 0px fantasy']
expected: FAIL
[Property font value 'small-caps extra-expanded lighter normal larger/calc(120% + 1.2em) serif' computes to 'small-caps 700 extra-expanded 48px / 115.2px serif']
expected: FAIL
[Property font value 'italic extra-condensed 20%/1.2 cursive' computes to 'italic extra-condensed 8px / 1.2 cursive']
expected: FAIL
[Property font value 'normal normal small-caps condensed xx-large/1.2 monospace' computes to 'small-caps condensed 32px / 1.2 monospace']
expected: FAIL
[Property font value 'extra-condensed normal small-caps italic 20%/1.2 monospace' computes to 'italic small-caps extra-condensed 8px / 1.2 monospace']
expected: FAIL
[Property font value 'condensed italic normal small-caps calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to 'italic small-caps condensed 0px / 0px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'lighter normal small-caps italic xx-large/1.2 sans-serif' computes to 'italic small-caps 700 32px / 1.2 sans-serif']
expected: FAIL
[Property font value 'normal small-caps italic lighter calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to 'italic small-caps 700 0px / 0px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'normal condensed small-caps italic calc(30% - 40px)/calc(120% + 1.2em) monospace' computes to 'italic small-caps condensed 0px / 0px monospace']
expected: FAIL
[Property font value 'normal normal normal bold calc(30% - 40px)/calc(120% + 1.2em) serif' computes to '700 0px / 0px serif']
expected: FAIL
[Property font value 'expanded 100 xx-large/1.2 monospace' computes to '100 expanded 32px / 1.2 monospace']
expected: FAIL
[Property font value 'italic ultra-expanded small-caps normal smaller sans-serif' computes to 'italic small-caps ultra-expanded 33.3333px sans-serif']
expected: FAIL
[Property font value 'normal extra-expanded bolder italic larger/calc(120% + 1.2em) sans-serif' computes to 'italic 900 extra-expanded 48px / 115.2px sans-serif']
expected: FAIL
[Property font value 'small-caps 900 normal xx-small cursive' computes to 'small-caps 900 9.6px cursive']
expected: FAIL
[Property font value 'small-caps medium/normal "Non-Generic Example Family Name"' computes to 'small-caps 16px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'bold normal semi-expanded normal 10px/normal monospace' computes to '700 semi-expanded 10px monospace']
expected: FAIL
[Property font value 'italic bolder small-caps normal medium/normal monospace' computes to 'italic small-caps 900 16px monospace']
expected: FAIL
[Property font value 'small-caps normal xx-large/1.2 serif' computes to 'small-caps 32px / 1.2 serif']
expected: FAIL
[Property font value 'small-caps normal condensed lighter larger/calc(120% + 1.2em) fantasy' computes to 'small-caps 700 condensed 48px / 115.2px fantasy']
expected: FAIL
[Property font value 'small-caps italic expanded smaller Menu' computes to 'italic small-caps expanded 33.3333px Menu']
expected: FAIL
[Property font value '100 extra-condensed small-caps 20%/1.2 cursive' computes to 'small-caps 100 extra-condensed 8px / 1.2 cursive']
expected: FAIL
[Property font value '100 italic small-caps 10px/normal Menu' computes to 'italic small-caps 100 10px Menu']
expected: FAIL
[Property font value 'small-caps italic normal normal 20%/1.2 "Non-Generic Example Family Name"' computes to 'italic small-caps 8px / 1.2 "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'condensed normal small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) Menu' computes to 'small-caps 100 condensed 0px / 0px Menu']
expected: FAIL
[Property font value 'italic small-caps normal normal xx-large/1.2 fantasy' computes to 'italic small-caps 32px / 1.2 fantasy']
expected: FAIL
[Property font value 'semi-condensed normal 900 xx-small "Non-Generic Example Family Name"' computes to '900 semi-condensed 9.6px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'normal normal italic small-caps larger/calc(120% + 1.2em) monospace' computes to 'italic small-caps 48px / 115.2px monospace']
expected: FAIL
[Property font value '900 small-caps ultra-condensed italic 10px/normal serif' computes to 'italic small-caps 900 ultra-condensed 10px serif']
expected: FAIL
[Property font value 'normal condensed normal small-caps calc(30% - 40px)/calc(120% + 1.2em) fantasy' computes to 'small-caps condensed 0px / 0px fantasy']
expected: FAIL
[Property font value 'italic bold larger/calc(120% + 1.2em) Menu' computes to 'italic 700 48px / 115.2px Menu']
expected: FAIL
[Property font value 'small-caps italic bold normal xx-large/1.2 fantasy' computes to 'italic small-caps 700 32px / 1.2 fantasy']
expected: FAIL
[Property font value 'small-caps condensed italic calc(30% - 40px)/calc(120% + 1.2em) fantasy' computes to 'italic small-caps condensed 0px / 0px fantasy']
expected: FAIL
[Property font value 'italic 100 normal small-caps 20%/1.2 sans-serif' computes to 'italic small-caps 100 8px / 1.2 sans-serif']
expected: FAIL
[Property font value 'italic semi-expanded normal small-caps medium/normal Menu' computes to 'italic small-caps semi-expanded 16px Menu']
expected: FAIL
[Property font value 'small-caps ultra-expanded 100 italic smaller sans-serif' computes to 'italic small-caps 100 ultra-expanded 33.3333px sans-serif']
expected: FAIL
[Property font value 'small-caps extra-condensed normal 900 20%/1.2 cursive' computes to 'small-caps 900 extra-condensed 8px / 1.2 cursive']
expected: FAIL
[Property font value 'small-caps expanded xx-large/1.2 Menu' computes to 'small-caps expanded 32px / 1.2 Menu']
expected: FAIL
[Property font value 'bolder small-caps normal normal 10px/normal "Non-Generic Example Family Name"' computes to 'small-caps 900 10px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'small-caps normal normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) Menu' computes to 'small-caps semi-expanded 0px / 0px Menu']
expected: FAIL
[Property font value 'italic normal small-caps normal 10px/normal monospace' computes to 'italic small-caps 10px monospace']
expected: FAIL
[Property font value 'lighter normal extra-expanded small-caps calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to 'small-caps 700 extra-expanded 0px / 0px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'small-caps normal italic xx-small "Non-Generic Example Family Name"' computes to 'italic small-caps 9.6px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'italic 10px/normal fantasy' computes to 'italic 10px fantasy']
expected: FAIL
[Property font value 'normal ultra-expanded lighter small-caps smaller cursive' computes to 'small-caps 700 ultra-expanded 33.3333px cursive']
expected: FAIL
[Property font value 'normal normal italic normal xx-large/1.2 fantasy' computes to 'italic 32px / 1.2 fantasy']
expected: FAIL
[Property font value 'normal normal normal larger/calc(120% + 1.2em) fantasy' computes to '48px / 115.2px fantasy']
expected: FAIL
[Property font value 'normal small-caps italic 10px/normal monospace' computes to 'italic small-caps 10px monospace']
expected: FAIL
[Property font value 'normal normal small-caps italic xx-small cursive' computes to 'italic small-caps 9.6px cursive']
expected: FAIL
[Property font value 'normal 900 small-caps normal smaller "Non-Generic Example Family Name"' computes to 'small-caps 900 33.3333px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'small-caps ultra-condensed normal italic 10px/normal sans-serif' computes to 'italic small-caps ultra-condensed 10px sans-serif']
expected: FAIL
[Property font value 'italic condensed normal calc(30% - 40px)/calc(120% + 1.2em) fantasy' computes to 'italic condensed 0px / 0px fantasy']
expected: FAIL
[Property font value 'normal small-caps 900 normal xx-large/1.2 cursive' computes to 'small-caps 900 32px / 1.2 cursive']
expected: FAIL
[Property font value 'italic extra-expanded small-caps larger/calc(120% + 1.2em) serif' computes to 'italic small-caps extra-expanded 48px / 115.2px serif']
expected: FAIL
[Property font value 'extra-condensed lighter normal small-caps 20%/1.2 sans-serif' computes to 'small-caps 700 extra-condensed 8px / 1.2 sans-serif']
expected: FAIL
[Property font value 'normal small-caps calc(30% - 40px)/calc(120% + 1.2em) Menu' computes to 'small-caps 0px / 0px Menu']
expected: FAIL
[Property font value 'small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) sans-serif' computes to 'small-caps 100 0px / 0px sans-serif']
expected: FAIL
[Property font value 'normal normal xx-large/1.2 cursive' computes to '32px / 1.2 cursive']
expected: FAIL
[Property font value 'semi-condensed normal italic xx-small Menu' computes to 'italic semi-condensed 9.6px Menu']
expected: FAIL
[Property font value 'normal normal normal small-caps 20%/1.2 "Non-Generic Example Family Name"' computes to 'small-caps 8px / 1.2 "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'normal normal 900 normal smaller "Non-Generic Example Family Name"' computes to '900 33.3333px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'normal lighter condensed calc(30% - 40px)/calc(120% + 1.2em) cursive' computes to '700 condensed 0px / 0px cursive']
expected: FAIL
[Property font value 'normal italic extra-expanded small-caps 10px/normal fantasy' computes to 'italic small-caps extra-expanded 10px fantasy']
expected: FAIL
[Property font value 'normal bolder small-caps extra-condensed 20%/1.2 sans-serif' computes to 'small-caps 900 extra-condensed 8px / 1.2 sans-serif']
expected: FAIL
[Property font value 'small-caps italic 900 medium/normal cursive' computes to 'italic small-caps 900 16px cursive']
expected: FAIL
[Property font value 'bolder normal italic smaller cursive' computes to 'italic 900 33.3333px cursive']
expected: FAIL
[Property font value 'semi-expanded medium/normal Menu' computes to 'semi-expanded 16px Menu']
expected: FAIL
[Property font value 'semi-condensed 900 italic normal xx-small fantasy' computes to 'italic 900 semi-condensed 9.6px fantasy']
expected: FAIL
[Property font value 'bolder condensed normal calc(30% - 40px)/calc(120% + 1.2em) cursive' computes to '900 condensed 0px / 0px cursive']
expected: FAIL
[Property font value 'expanded bolder small-caps xx-large/1.2 Menu' computes to 'small-caps 900 expanded 32px / 1.2 Menu']
expected: FAIL
[Property font value 'semi-condensed italic normal 100 xx-small serif' computes to 'italic 100 semi-condensed 9.6px serif']
expected: FAIL
[Property font value '900 small-caps larger/calc(120% + 1.2em) monospace' computes to 'small-caps 900 48px / 115.2px monospace']
expected: FAIL
[Property font value 'small-caps semi-expanded italic bold medium/normal Menu' computes to 'italic small-caps 700 semi-expanded 16px Menu']
expected: FAIL
[Property font value 'expanded normal italic small-caps xx-large/1.2 serif' computes to 'italic small-caps expanded 32px / 1.2 serif']
expected: FAIL
[Property font value 'normal italic small-caps bold 10px/normal cursive' computes to 'italic small-caps 700 10px cursive']
expected: FAIL
[Property font value 'normal ultra-condensed small-caps 10px/normal cursive' computes to 'small-caps ultra-condensed 10px cursive']
expected: FAIL
[Property font value 'normal italic ultra-expanded bold 20%/1.2 monospace' computes to 'italic 700 ultra-expanded 8px / 1.2 monospace']
expected: FAIL
[Property font value 'italic normal lighter small-caps xx-large/1.2 cursive' computes to 'italic small-caps 700 32px / 1.2 cursive']
expected: FAIL
[Property font value '900 expanded normal small-caps xx-large/1.2 Menu' computes to 'small-caps 900 expanded 32px / 1.2 Menu']
expected: FAIL
[Property font value 'small-caps normal 100 smaller fantasy' computes to 'small-caps 100 33.3333px fantasy']
expected: FAIL
[Property font value '100 normal small-caps condensed larger/calc(120% + 1.2em) cursive' computes to 'small-caps 100 condensed 48px / 115.2px cursive']
expected: FAIL
[Property font value 'normal 100 small-caps larger/calc(120% + 1.2em) Menu' computes to 'small-caps 100 48px / 115.2px Menu']
expected: FAIL
[Property font value 'normal lighter normal small-caps 10px/normal "Non-Generic Example Family Name"' computes to 'small-caps 700 10px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'italic normal semi-expanded normal 10px/normal Menu' computes to 'italic semi-expanded 10px Menu']
expected: FAIL
[Property font value '100 small-caps ultra-expanded normal smaller "Non-Generic Example Family Name"' computes to 'small-caps 100 ultra-expanded 33.3333px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'extra-condensed normal normal small-caps 20%/1.2 fantasy' computes to 'small-caps extra-condensed 8px / 1.2 fantasy']
expected: FAIL
[Property font value 'small-caps normal ultra-expanded xx-small serif' computes to 'small-caps ultra-expanded 9.6px serif']
expected: FAIL
[Property font value 'normal normal bolder small-caps 20%/1.2 sans-serif' computes to 'small-caps 900 8px / 1.2 sans-serif']
expected: FAIL
[Property font value 'normal small-caps bold italic larger/calc(120% + 1.2em) fantasy' computes to 'italic small-caps 700 48px / 115.2px fantasy']
expected: FAIL
[Property font value 'italic normal normal ultra-condensed larger/calc(120% + 1.2em) cursive' computes to 'italic ultra-condensed 48px / 115.2px cursive']
expected: FAIL
[Property font value 'semi-expanded small-caps normal normal medium/normal cursive' computes to 'small-caps semi-expanded 16px cursive']
expected: FAIL
[Property font value 'italic normal normal small-caps medium/normal serif' computes to 'italic small-caps 16px serif']
expected: FAIL
[Property font value 'normal small-caps normal bolder larger/calc(120% + 1.2em) cursive' computes to 'small-caps 900 48px / 115.2px cursive']
expected: FAIL
[Property font value 'normal italic bolder calc(30% - 40px)/calc(120% + 1.2em) monospace' computes to 'italic 900 0px / 0px monospace']
expected: FAIL
[Property font value 'italic normal semi-condensed smaller monospace' computes to 'italic semi-condensed 33.3333px monospace']
expected: FAIL
[Property font value 'italic bold ultra-condensed small-caps 10px/normal sans-serif' computes to 'italic small-caps 700 ultra-condensed 10px sans-serif']
expected: FAIL
[Property font value 'ultra-expanded bold normal normal smaller "Non-Generic Example Family Name"' computes to '700 ultra-expanded 33.3333px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'ultra-expanded small-caps italic smaller Menu' computes to 'italic small-caps ultra-expanded 33.3333px Menu']
expected: FAIL
[Property font value 'expanded normal xx-large/1.2 "Non-Generic Example Family Name"' computes to 'expanded 32px / 1.2 "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'ultra-condensed small-caps italic normal 10px/normal "Non-Generic Example Family Name"' computes to 'italic small-caps ultra-condensed 10px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'italic normal 100 condensed larger/calc(120% + 1.2em) fantasy' computes to 'italic 100 condensed 48px / 115.2px fantasy']
expected: FAIL
[Property font value 'small-caps semi-condensed italic normal xx-small monospace' computes to 'italic small-caps semi-condensed 9.6px monospace']
expected: FAIL
[Property font value 'italic small-caps normal ultra-expanded smaller Menu' computes to 'italic small-caps ultra-expanded 33.3333px Menu']
expected: FAIL
[Property font value '900 italic normal medium/normal sans-serif' computes to 'italic 900 16px sans-serif']
expected: FAIL
[Property font value 'italic normal normal 100 xx-large/1.2 sans-serif' computes to 'italic 100 32px / 1.2 sans-serif']
expected: FAIL
[Property font value '900 small-caps italic xx-small cursive' computes to 'italic small-caps 900 9.6px cursive']
expected: FAIL
[Property font value 'ultra-condensed bolder normal italic 10px/normal serif' computes to 'italic 900 ultra-condensed 10px serif']
expected: FAIL
[Property font value 'condensed 100 italic calc(30% - 40px)/calc(120% + 1.2em) cursive' computes to 'italic 100 condensed 0px / 0px cursive']
expected: FAIL
[Property font value 'semi-expanded small-caps lighter italic medium/normal fantasy' computes to 'italic small-caps 700 semi-expanded 16px fantasy']
expected: FAIL
[Property font value 'normal ultra-condensed normal normal 10px/normal sans-serif' computes to 'ultra-condensed 10px sans-serif']
expected: FAIL
[Property font value 'bold extra-expanded italic larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to 'italic 700 extra-expanded 48px / 115.2px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'normal semi-expanded italic medium/normal Menu' computes to 'italic semi-expanded 16px Menu']
expected: FAIL
[Property font value 'italic normal extra-expanded 900 calc(30% - 40px)/calc(120% + 1.2em) serif' computes to 'italic 900 extra-expanded 0px / 0px serif']
expected: FAIL
[Property font value 'lighter small-caps extra-expanded larger/calc(120% + 1.2em) Menu' computes to 'small-caps 700 extra-expanded 48px / 115.2px Menu']
expected: FAIL
[Property font value 'italic small-caps xx-small sans-serif' computes to 'italic small-caps 9.6px sans-serif']
expected: FAIL
[Property font value 'small-caps normal ultra-condensed normal medium/normal sans-serif' computes to 'small-caps ultra-condensed 16px sans-serif']
expected: FAIL
[Property font value 'semi-expanded normal italic normal medium/normal "Non-Generic Example Family Name"' computes to 'italic semi-expanded 16px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'normal small-caps normal normal medium/normal serif' computes to 'small-caps 16px serif']
expected: FAIL
[Property font value 'expanded small-caps normal italic xx-large/1.2 fantasy' computes to 'italic small-caps expanded 32px / 1.2 fantasy']
expected: FAIL
[Property font value 'normal normal lighter semi-condensed calc(30% - 40px)/calc(120% + 1.2em) cursive' computes to '700 semi-condensed 0px / 0px cursive']
expected: FAIL
[Property font value 'lighter normal normal normal xx-small Menu' computes to '700 9.6px Menu']
expected: FAIL
[Property font value '900 italic small-caps normal 20%/1.2 "Non-Generic Example Family Name"' computes to 'italic small-caps 900 8px / 1.2 "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'expanded normal bolder italic xx-large/1.2 sans-serif' computes to 'italic 900 expanded 32px / 1.2 sans-serif']
expected: FAIL
[Property font value 'semi-condensed small-caps bolder normal xx-small cursive' computes to 'small-caps 900 semi-condensed 9.6px cursive']
expected: FAIL
[Property font value 'italic lighter small-caps expanded xx-large/1.2 Menu' computes to 'italic small-caps 700 expanded 32px / 1.2 Menu']
expected: FAIL
[Property font value 'normal normal expanded normal medium/normal monospace' computes to 'expanded 16px monospace']
expected: FAIL
[Property font value 'normal bold italic normal xx-small cursive' computes to 'italic 700 9.6px cursive']
expected: FAIL
[Property font value 'normal lighter italic ultra-condensed xx-large/1.2 monospace' computes to 'italic 700 ultra-condensed 32px / 1.2 monospace']
expected: FAIL
[Property font value 'lighter semi-condensed normal normal xx-small fantasy' computes to '700 semi-condensed 9.6px fantasy']
expected: FAIL
[Property font value 'normal small-caps 100 medium/normal sans-serif' computes to 'small-caps 100 16px sans-serif']
expected: FAIL
[Property font value 'italic normal normal normal xx-small "Non-Generic Example Family Name"' computes to 'italic 9.6px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'italic 100 extra-expanded larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to 'italic 100 extra-expanded 48px / 115.2px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'small-caps expanded bolder xx-large/1.2 "Non-Generic Example Family Name"' computes to 'small-caps 900 expanded 32px / 1.2 "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'normal extra-expanded larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to 'extra-expanded 48px / 115.2px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'bold small-caps italic normal medium/normal fantasy' computes to 'italic small-caps 700 16px fantasy']
expected: FAIL
[Property font value 'normal semi-condensed normal bolder xx-small monospace' computes to '900 semi-condensed 9.6px monospace']
expected: FAIL
[Property font value 'normal medium/normal sans-serif' computes to '16px sans-serif']
expected: FAIL
[Property font value 'normal bold expanded small-caps xx-large/1.2 Menu' computes to 'small-caps 700 expanded 32px / 1.2 Menu']
expected: FAIL
[Property font value 'normal small-caps normal xx-small "Non-Generic Example Family Name"' computes to 'small-caps 9.6px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'extra-expanded italic small-caps 900 larger/calc(120% + 1.2em) fantasy' computes to 'italic small-caps 900 extra-expanded 48px / 115.2px fantasy']
expected: FAIL
[Property font value '100 normal normal italic medium/normal "Non-Generic Example Family Name"' computes to 'italic 100 16px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'normal italic normal 20%/1.2 cursive' computes to 'italic 8px / 1.2 cursive']
expected: FAIL
[Property font value 'normal bold small-caps italic 10px/normal serif' computes to 'italic small-caps 700 10px serif']
expected: FAIL
[Property font value 'small-caps italic extra-expanded normal 10px/normal "Non-Generic Example Family Name"' computes to 'italic small-caps extra-expanded 10px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value '900 10px/normal cursive' computes to '900 10px cursive']
expected: FAIL
[Property font value 'small-caps 900 italic normal 10px/normal serif' computes to 'italic small-caps 900 10px serif']
expected: FAIL
[Property font value 'small-caps ultra-expanded normal normal smaller serif' computes to 'small-caps ultra-expanded 33.3333px serif']
expected: FAIL
[Property font value 'small-caps normal normal larger/calc(120% + 1.2em) sans-serif' computes to 'small-caps 48px / 115.2px sans-serif']
expected: FAIL
[Property font value 'normal italic normal small-caps xx-small monospace' computes to 'italic small-caps 9.6px monospace']
expected: FAIL
[Property font value 'small-caps italic bolder semi-expanded larger/calc(120% + 1.2em) monospace' computes to 'italic small-caps 900 semi-expanded 48px / 115.2px monospace']
expected: FAIL
[Property font value 'condensed normal normal bolder calc(30% - 40px)/calc(120% + 1.2em) monospace' computes to '900 condensed 0px / 0px monospace']
expected: FAIL
[Property font value 'italic 900 normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) cursive' computes to 'italic 900 semi-expanded 0px / 0px cursive']
expected: FAIL
[Property font value 'italic ultra-condensed small-caps lighter 10px/normal cursive' computes to 'italic small-caps 700 ultra-condensed 10px cursive']
expected: FAIL
[Property font value 'lighter normal italic normal 10px/normal fantasy' computes to 'italic 700 10px fantasy']
expected: FAIL
[Property font value 'small-caps normal italic normal medium/normal serif' computes to 'italic small-caps 16px serif']
expected: FAIL
[Property font value 'normal normal ultra-expanded small-caps larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to 'small-caps ultra-expanded 48px / 115.2px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'semi-expanded normal bold normal medium/normal serif' computes to '700 semi-expanded 16px serif']
expected: FAIL
[Property font value 'normal small-caps normal italic xx-large/1.2 sans-serif' computes to 'italic small-caps 32px / 1.2 sans-serif']
expected: FAIL
[Property font value 'italic normal small-caps smaller fantasy' computes to 'italic small-caps 33.3333px fantasy']
expected: FAIL
[Property font value 'lighter small-caps normal italic 20%/1.2 serif' computes to 'italic small-caps 700 8px / 1.2 serif']
expected: FAIL
[Property font value 'normal italic small-caps condensed 20%/1.2 fantasy' computes to 'italic small-caps condensed 8px / 1.2 fantasy']
expected: FAIL
[Property font value 'italic bold small-caps xx-small fantasy' computes to 'italic small-caps 700 9.6px fantasy']
expected: FAIL
[Property font value 'italic small-caps normal bold larger/calc(120% + 1.2em) monospace' computes to 'italic small-caps 700 48px / 115.2px monospace']
expected: FAIL
[Property font value 'italic extra-condensed 100 20%/1.2 fantasy' computes to 'italic 100 extra-condensed 8px / 1.2 fantasy']
expected: FAIL
[Property font value 'small-caps normal italic expanded larger/calc(120% + 1.2em) cursive' computes to 'italic small-caps expanded 48px / 115.2px cursive']
expected: FAIL
[Property font value 'small-caps bolder normal italic xx-large/1.2 monospace' computes to 'italic small-caps 900 32px / 1.2 monospace']
expected: FAIL
[Property font value 'normal normal small-caps normal calc(30% - 40px)/calc(120% + 1.2em) sans-serif' computes to 'small-caps 0px / 0px sans-serif']
expected: FAIL
[Property font value 'small-caps normal normal normal smaller cursive' computes to 'small-caps 33.3333px cursive']
expected: FAIL
[Property font value 'small-caps normal 900 normal 10px/normal monospace' computes to 'small-caps 900 10px monospace']
expected: FAIL
[Property font value 'normal normal bold italic 10px/normal serif' computes to 'italic 700 10px serif']
expected: FAIL
[Property font value '100 small-caps normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) sans-serif' computes to 'small-caps 100 semi-expanded 0px / 0px sans-serif']
expected: FAIL
[Property font value 'normal italic small-caps larger/calc(120% + 1.2em) serif' computes to 'italic small-caps 48px / 115.2px serif']
expected: FAIL
[Property font value 'lighter italic condensed normal medium/normal cursive' computes to 'italic 700 condensed 16px cursive']
expected: FAIL
[Property font value 'normal extra-expanded italic small-caps larger/calc(120% + 1.2em) serif' computes to 'italic small-caps extra-expanded 48px / 115.2px serif']
expected: FAIL
[Property font value 'small-caps italic ultra-expanded lighter 20%/1.2 serif' computes to 'italic small-caps 700 ultra-expanded 8px / 1.2 serif']
expected: FAIL
[Property font value 'italic small-caps extra-condensed xx-small cursive' computes to 'italic small-caps extra-condensed 9.6px cursive']
expected: FAIL
[Property font value 'italic small-caps lighter normal 20%/1.2 serif' computes to 'italic small-caps 700 8px / 1.2 serif']
expected: FAIL
[Property font value 'italic normal bolder normal medium/normal sans-serif' computes to 'italic 900 16px sans-serif']
expected: FAIL
[Property font value 'ultra-expanded italic bold smaller monospace' computes to 'italic 700 ultra-expanded 33.3333px monospace']
expected: FAIL
[Property font value 'small-caps 100 italic smaller "Non-Generic Example Family Name"' computes to 'italic small-caps 100 33.3333px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'normal extra-condensed small-caps normal 20%/1.2 fantasy' computes to 'small-caps extra-condensed 8px / 1.2 fantasy']
expected: FAIL
[Property font value 'normal normal semi-expanded xx-small fantasy' computes to 'semi-expanded 9.6px fantasy']
expected: FAIL
[Property font value 'italic normal small-caps 900 20%/1.2 Menu' computes to 'italic small-caps 900 8px / 1.2 Menu']
expected: FAIL
[Property font value 'normal extra-condensed normal italic 20%/1.2 cursive' computes to 'italic extra-condensed 8px / 1.2 cursive']
expected: FAIL
[Property font value 'normal small-caps italic normal 20%/1.2 Menu' computes to 'italic small-caps 8px / 1.2 Menu']
expected: FAIL
[Property font value 'small-caps normal italic lighter xx-large/1.2 sans-serif' computes to 'italic small-caps 700 32px / 1.2 sans-serif']
expected: FAIL
[Property font value 'normal normal extra-expanded italic xx-large/1.2 Menu' computes to 'italic extra-expanded 32px / 1.2 Menu']
expected: FAIL
[Property font value 'normal italic semi-expanded larger/calc(120% + 1.2em) sans-serif' computes to 'italic semi-expanded 48px / 115.2px sans-serif']
expected: FAIL
[Property font value 'normal italic normal extra-condensed xx-large/1.2 "Non-Generic Example Family Name"' computes to 'italic extra-condensed 32px / 1.2 "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'normal bolder italic small-caps medium/normal fantasy' computes to 'italic small-caps 900 16px fantasy']
expected: FAIL
[Property font value 'small-caps italic smaller monospace' computes to 'italic small-caps 33.3333px monospace']
expected: FAIL
[Property font value 'expanded italic small-caps normal xx-large/1.2 cursive' computes to 'italic small-caps expanded 32px / 1.2 cursive']
expected: FAIL
[Property font value 'small-caps lighter normal ultra-condensed larger/calc(120% + 1.2em) Menu' computes to 'small-caps 700 ultra-condensed 48px / 115.2px Menu']
expected: FAIL
[Property font value 'italic small-caps normal medium/normal cursive' computes to 'italic small-caps 16px cursive']
expected: FAIL
[Property font value 'normal small-caps normal ultra-condensed smaller fantasy' computes to 'small-caps ultra-condensed 33.3333px fantasy']
expected: FAIL
[Property font value 'extra-condensed small-caps italic 900 20%/1.2 serif' computes to 'italic small-caps 900 extra-condensed 8px / 1.2 serif']
expected: FAIL
[Property font value '900 condensed small-caps normal calc(30% - 40px)/calc(120% + 1.2em) fantasy' computes to 'small-caps 900 condensed 0px / 0px fantasy']
expected: FAIL
[Property font value 'normal small-caps bolder condensed smaller monospace' computes to 'small-caps 900 condensed 33.3333px monospace']
expected: FAIL
[Property font value 'normal normal 100 larger/calc(120% + 1.2em) Menu' computes to '100 48px / 115.2px Menu']
expected: FAIL
[Property font value 'normal 100 semi-condensed normal xx-small fantasy' computes to '100 semi-condensed 9.6px fantasy']
expected: FAIL
[Property font value 'normal normal normal ultra-condensed xx-small sans-serif' computes to 'ultra-condensed 9.6px sans-serif']
expected: FAIL
[Property font value 'extra-condensed italic normal normal 20%/1.2 Menu' computes to 'italic extra-condensed 8px / 1.2 Menu']
expected: FAIL
[Property font value 'italic 900 ultra-expanded normal smaller serif' computes to 'italic 900 ultra-expanded 33.3333px serif']
expected: FAIL
[Property font value 'normal 900 semi-expanded italic medium/normal monospace' computes to 'italic 900 semi-expanded 16px monospace']
expected: FAIL
[Property font value 'bold italic normal normal xx-large/1.2 cursive' computes to 'italic 700 32px / 1.2 cursive']
expected: FAIL
[Property font value 'normal italic 10px/normal sans-serif' computes to 'italic 10px sans-serif']
expected: FAIL
[Property font value 'normal normal italic bolder smaller Menu' computes to 'italic 900 33.3333px Menu']
expected: FAIL
[Property font value 'normal normal small-caps lighter medium/normal fantasy' computes to 'small-caps 700 16px fantasy']
expected: FAIL
[Property font value 'condensed small-caps bold calc(30% - 40px)/calc(120% + 1.2em) sans-serif' computes to 'small-caps 700 condensed 0px / 0px sans-serif']
expected: FAIL
[Property font value 'normal ultra-expanded normal smaller serif' computes to 'ultra-expanded 33.3333px serif']
expected: FAIL
[Property font value 'normal 900 normal xx-large/1.2 fantasy' computes to '900 32px / 1.2 fantasy']
expected: FAIL
[Property font value '900 normal italic extra-condensed calc(30% - 40px)/calc(120% + 1.2em) Menu' computes to 'italic 900 extra-condensed 0px / 0px Menu']
expected: FAIL
[Property font value 'ultra-expanded normal normal normal smaller sans-serif' computes to 'ultra-expanded 33.3333px sans-serif']
expected: FAIL
[Property font value 'normal normal italic extra-condensed 10px/normal "Non-Generic Example Family Name"' computes to 'italic extra-condensed 10px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'ultra-expanded normal small-caps smaller cursive' computes to 'small-caps ultra-expanded 33.3333px cursive']
expected: FAIL
[Property font value 'normal small-caps expanded italic calc(30% - 40px)/calc(120% + 1.2em) serif' computes to 'italic small-caps expanded 0px / 0px serif']
expected: FAIL
[Property font value 'bolder normal small-caps normal medium/normal serif' computes to 'small-caps 900 16px serif']
expected: FAIL
[Property font value 'small-caps italic normal 100 calc(30% - 40px)/calc(120% + 1.2em) serif' computes to 'italic small-caps 100 0px / 0px serif']
expected: FAIL
[Property font value 'normal 100 medium/normal cursive' computes to '100 16px cursive']
expected: FAIL
[Property font value 'bold normal 20%/1.2 fantasy' computes to '700 8px / 1.2 fantasy']
expected: FAIL
[Property font value 'extra-expanded normal lighter small-caps larger/calc(120% + 1.2em) cursive' computes to 'small-caps 700 extra-expanded 48px / 115.2px cursive']
expected: FAIL
[Property font value 'normal 900 italic calc(30% - 40px)/calc(120% + 1.2em) sans-serif' computes to 'italic 900 0px / 0px sans-serif']
expected: FAIL
[Property font value 'small-caps 100 semi-expanded italic medium/normal monospace' computes to 'italic small-caps 100 semi-expanded 16px monospace']
expected: FAIL
[Property font value 'small-caps normal normal italic 10px/normal fantasy' computes to 'italic small-caps 10px fantasy']
expected: FAIL
[Property font value 'ultra-condensed italic bolder normal 10px/normal Menu' computes to 'italic 900 ultra-condensed 10px Menu']
expected: FAIL
[Property font value '100 normal italic small-caps 20%/1.2 monospace' computes to 'italic small-caps 100 8px / 1.2 monospace']
expected: FAIL
[Property font value 'normal bold normal normal larger/calc(120% + 1.2em) monospace' computes to '700 48px / 115.2px monospace']
expected: FAIL
[Property font value 'small-caps bolder condensed calc(30% - 40px)/calc(120% + 1.2em) cursive' computes to 'small-caps 900 condensed 0px / 0px cursive']
expected: FAIL
[Property font value 'normal ultra-expanded italic lighter smaller sans-serif' computes to 'italic 700 ultra-expanded 33.3333px sans-serif']
expected: FAIL
[Property font value 'bolder italic extra-condensed xx-small sans-serif' computes to 'italic 900 extra-condensed 9.6px sans-serif']
expected: FAIL
[Property font value 'italic bolder normal smaller "Non-Generic Example Family Name"' computes to 'italic 900 33.3333px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'small-caps normal bolder extra-expanded calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to 'small-caps 900 extra-expanded 0px / 0px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'normal italic small-caps normal smaller sans-serif' computes to 'italic small-caps 33.3333px sans-serif']
expected: FAIL
[Property font value 'small-caps italic normal 10px/normal Menu' computes to 'italic small-caps 10px Menu']
expected: FAIL
[Property font value 'semi-condensed small-caps normal xx-small sans-serif' computes to 'small-caps semi-condensed 9.6px sans-serif']
expected: FAIL
[Property font value 'bolder italic normal small-caps larger/calc(120% + 1.2em) fantasy' computes to 'italic small-caps 900 48px / 115.2px fantasy']
expected: FAIL
[Property font value 'normal expanded italic normal xx-large/1.2 "Non-Generic Example Family Name"' computes to 'italic expanded 32px / 1.2 "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'ultra-condensed normal normal italic 10px/normal cursive' computes to 'italic ultra-condensed 10px cursive']
expected: FAIL
[Property font value 'ultra-expanded 100 small-caps italic smaller serif' computes to 'italic small-caps 100 ultra-expanded 33.3333px serif']
expected: FAIL
[Property font value '900 normal semi-condensed smaller fantasy' computes to '900 semi-condensed 33.3333px fantasy']
expected: FAIL
[Property font value 'bolder normal normal calc(30% - 40px)/calc(120% + 1.2em) monospace' computes to '900 0px / 0px monospace']
expected: FAIL
[Property font value 'normal 100 normal ultra-expanded 20%/1.2 serif' computes to '100 ultra-expanded 8px / 1.2 serif']
expected: FAIL
[Property font value 'italic small-caps condensed normal medium/normal fantasy' computes to 'italic small-caps condensed 16px fantasy']
expected: FAIL
[Property font value 'italic normal 20%/1.2 monospace' computes to 'italic 8px / 1.2 monospace']
expected: FAIL
[Property font value 'extra-expanded lighter small-caps normal larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to 'small-caps 700 extra-expanded 48px / 115.2px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'italic small-caps 100 ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) sans-serif' computes to 'italic small-caps 100 ultra-condensed 0px / 0px sans-serif']
expected: FAIL
[Property font value 'normal italic 900 semi-condensed xx-large/1.2 serif' computes to 'italic 900 semi-condensed 32px / 1.2 serif']
expected: FAIL
[Property font value 'normal italic expanded normal smaller cursive' computes to 'italic expanded 33.3333px cursive']
expected: FAIL
[Property font value 'normal small-caps italic extra-condensed xx-small serif' computes to 'italic small-caps extra-condensed 9.6px serif']
expected: FAIL
[Property font value 'ultra-condensed normal small-caps normal 10px/normal fantasy' computes to 'small-caps ultra-condensed 10px fantasy']
expected: FAIL
[Property font value 'normal expanded bold normal xx-large/1.2 serif' computes to '700 expanded 32px / 1.2 serif']
expected: FAIL
[Property font value 'italic lighter normal normal 10px/normal serif' computes to 'italic 700 10px serif']
expected: FAIL
[Property font value 'bold semi-condensed small-caps italic xx-small monospace' computes to 'italic small-caps 700 semi-condensed 9.6px monospace']
expected: FAIL
[Property font value 'small-caps extra-expanded normal larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to 'small-caps extra-expanded 48px / 115.2px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'normal italic lighter normal xx-small Menu' computes to 'italic 700 9.6px Menu']
expected: FAIL
[Property font value 'italic expanded normal bolder xx-large/1.2 "Non-Generic Example Family Name"' computes to 'italic 900 expanded 32px / 1.2 "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'lighter italic normal ultra-expanded smaller monospace' computes to 'italic 700 ultra-expanded 33.3333px monospace']
expected: FAIL
[Property font value 'normal normal normal italic 10px/normal Menu' computes to 'italic 10px Menu']
expected: FAIL
[Property font value 'small-caps normal bold italic 20%/1.2 Menu' computes to 'italic small-caps 700 8px / 1.2 Menu']
expected: FAIL
[Property font value 'normal small-caps semi-condensed 10px/normal Menu' computes to 'small-caps semi-condensed 10px Menu']
expected: FAIL
[Property font value 'normal normal ultra-condensed 100 smaller serif' computes to '100 ultra-condensed 33.3333px serif']
expected: FAIL
[Property font value 'bold extra-condensed 20%/1.2 sans-serif' computes to '700 extra-condensed 8px / 1.2 sans-serif']
expected: FAIL
[Property font value 'bold normal small-caps xx-small "Non-Generic Example Family Name"' computes to 'small-caps 700 9.6px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'small-caps bold italic extra-condensed 20%/1.2 sans-serif' computes to 'italic small-caps 700 extra-condensed 8px / 1.2 sans-serif']
expected: FAIL
[Property font value 'normal normal italic medium/normal cursive' computes to 'italic 16px cursive']
expected: FAIL
[Property font value 'bold normal normal ultra-condensed larger/calc(120% + 1.2em) sans-serif' computes to '700 ultra-condensed 48px / 115.2px sans-serif']
expected: FAIL
[Property font value 'normal bolder normal italic smaller Menu' computes to 'italic 900 33.3333px Menu']
expected: FAIL
[Property font value '100 semi-expanded normal italic medium/normal monospace' computes to 'italic 100 semi-expanded 16px monospace']
expected: FAIL
[Property font value 'extra-condensed italic lighter small-caps 20%/1.2 "Non-Generic Example Family Name"' computes to 'italic small-caps 700 extra-condensed 8px / 1.2 "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'bold small-caps normal smaller Menu' computes to 'small-caps 700 33.3333px Menu']
expected: FAIL
[Property font value 'normal normal normal normal smaller monospace' computes to '33.3333px monospace']
expected: FAIL
[Property font value 'normal italic 100 small-caps medium/normal "Non-Generic Example Family Name"' computes to 'italic small-caps 100 16px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'semi-expanded bold italic small-caps medium/normal monospace' computes to 'italic small-caps 700 semi-expanded 16px monospace']
expected: FAIL
[Property font value 'normal semi-expanded 900 medium/normal "Non-Generic Example Family Name"' computes to '900 semi-expanded 16px "Non-Generic Example Family Name"']
expected: FAIL
[Property font value 'extra-expanded small-caps normal 100 larger/calc(120% + 1.2em) monospace' computes to 'small-caps 100 extra-expanded 48px / 115.2px monospace']
expected: FAIL
[Property font value '100 italic semi-condensed small-caps xx-large/1.2 fantasy' computes to 'italic small-caps 100 semi-condensed 32px / 1.2 fantasy']
expected: FAIL

View file

@ -17,3 +17,465 @@
[caption should be a supported system font.]
expected: FAIL
[e.style['font'\] = "italic normal extra-expanded 900 calc(30% - 40px)/calc(120% + 1.2em) serif" should set the property value]
expected: FAIL
[e.style['font'\] = "expanded normal bolder italic xx-large/1.2 sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "condensed italic normal small-caps calc(30% - 40px)/calc(120% + 1.2em) \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps oblique ultra-expanded lighter 20%/1.2 serif" should set the property value]
expected: FAIL
[e.style['font'\] = "extra-expanded 900 normal larger/calc(120% + 1.2em) Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "bold italic small-caps ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) serif" should set the property value]
expected: FAIL
[e.style['font'\] = "normal normal small-caps 20%/1.2 serif" should set the property value]
expected: FAIL
[e.style['font'\] = "italic extra-expanded small-caps larger/calc(120% + 1.2em) serif" should set the property value]
expected: FAIL
[e.style['font'\] = "oblique normal expanded small-caps 20%/1.2 \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "extra-expanded normal normal larger/calc(120% + 1.2em) serif" should set the property value]
expected: FAIL
[e.style['font'\] = "normal italic normal 20%/1.2 cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "100 normal small-caps condensed larger/calc(120% + 1.2em) cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "oblique expanded normal bolder xx-large/1.2 \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "oblique normal 20%/1.2 monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "oblique extra-condensed 20%/1.2 cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "condensed 100 italic calc(30% - 40px)/calc(120% + 1.2em) cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "normal oblique bolder calc(30% - 40px)/calc(120% + 1.2em) monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "900 normal italic extra-condensed calc(30% - 40px)/calc(120% + 1.2em) Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "normal italic 900 semi-condensed xx-large/1.2 serif" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps normal xx-large/1.2 serif" should set the property value]
expected: FAIL
[e.style['font'\] = "oblique normal normal 100 xx-large/1.2 sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "100 normal oblique small-caps 20%/1.2 monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "italic bold larger/calc(120% + 1.2em) Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "100 extra-condensed small-caps 20%/1.2 cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "extra-expanded italic small-caps 900 larger/calc(120% + 1.2em) fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "normal oblique normal normal calc(30% - 40px)/calc(120% + 1.2em) fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "100 oblique semi-condensed small-caps xx-large/1.2 fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "oblique normal lighter small-caps xx-large/1.2 cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "normal small-caps 900 normal xx-large/1.2 cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "normal small-caps normal bolder larger/calc(120% + 1.2em) cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps normal italic expanded larger/calc(120% + 1.2em) cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "normal extra-expanded bolder oblique larger/calc(120% + 1.2em) sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps bolder condensed calc(30% - 40px)/calc(120% + 1.2em) cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "lighter normal extra-expanded small-caps calc(30% - 40px)/calc(120% + 1.2em) \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "lighter normal small-caps oblique xx-large/1.2 sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "bold extra-condensed 20%/1.2 sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "bolder small-caps oblique expanded xx-large/1.2 monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "normal normal lighter semi-condensed calc(30% - 40px)/calc(120% + 1.2em) cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "normal lighter condensed calc(30% - 40px)/calc(120% + 1.2em) cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps normal bold oblique 20%/1.2 Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "oblique extra-condensed 100 20%/1.2 fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps normal normal bolder 20%/1.2 monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps oblique normal normal 20%/1.2 \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "lighter small-caps extra-expanded larger/calc(120% + 1.2em) Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "oblique normal small-caps 900 20%/1.2 Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps normal oblique lighter xx-large/1.2 sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "expanded oblique small-caps normal xx-large/1.2 cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "extra-condensed normal normal small-caps 20%/1.2 fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "oblique lighter small-caps expanded xx-large/1.2 Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "normal 100 small-caps larger/calc(120% + 1.2em) Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "extra-expanded normal lighter small-caps larger/calc(120% + 1.2em) cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "normal normal normal small-caps 20%/1.2 \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "italic normal normal calc(30% - 40px)/calc(120% + 1.2em) Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "italic normal normal ultra-condensed larger/calc(120% + 1.2em) cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps normal extra-condensed italic xx-large/1.2 cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps oblique bold normal xx-large/1.2 fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "lighter small-caps normal italic 20%/1.2 serif" should set the property value]
expected: FAIL
[e.style['font'\] = "italic small-caps 100 ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "italic 900 normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "normal bold normal normal larger/calc(120% + 1.2em) monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "extra-condensed lighter normal small-caps 20%/1.2 sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "normal extra-condensed small-caps normal 20%/1.2 fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "extra-condensed small-caps oblique 900 20%/1.2 serif" should set the property value]
expected: FAIL
[e.style['font'\] = "normal extra-expanded italic small-caps larger/calc(120% + 1.2em) serif" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps normal condensed lighter larger/calc(120% + 1.2em) fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "italic condensed normal calc(30% - 40px)/calc(120% + 1.2em) fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "bold normal 20%/1.2 fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "normal 900 normal xx-large/1.2 fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "extra-expanded lighter small-caps normal larger/calc(120% + 1.2em) \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "oblique 100 normal small-caps 20%/1.2 sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "condensed normal normal bolder calc(30% - 40px)/calc(120% + 1.2em) monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "expanded 100 xx-large/1.2 monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "normal normal normal larger/calc(120% + 1.2em) fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps expanded bolder xx-large/1.2 \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "italic small-caps normal bold larger/calc(120% + 1.2em) monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "condensed small-caps bold calc(30% - 40px)/calc(120% + 1.2em) sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "normal oblique small-caps larger/calc(120% + 1.2em) serif" should set the property value]
expected: FAIL
[e.style['font'\] = "normal oblique semi-expanded larger/calc(120% + 1.2em) sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "normal normal bolder small-caps 20%/1.2 sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps italic normal 100 calc(30% - 40px)/calc(120% + 1.2em) serif" should set the property value]
expected: FAIL
[e.style['font'\] = "oblique small-caps lighter normal 20%/1.2 serif" should set the property value]
expected: FAIL
[e.style['font'\] = "oblique small-caps semi-condensed 900 xx-large/1.2 monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps condensed italic calc(30% - 40px)/calc(120% + 1.2em) fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "900 normal normal small-caps xx-large/1.2 serif" should set the property value]
expected: FAIL
[e.style['font'\] = "900 condensed small-caps normal calc(30% - 40px)/calc(120% + 1.2em) fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "normal condensed small-caps italic calc(30% - 40px)/calc(120% + 1.2em) monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "extra-condensed oblique normal normal 20%/1.2 Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "bolder normal expanded italic 20%/1.2 Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "900 small-caps larger/calc(120% + 1.2em) monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "extra-condensed normal small-caps oblique 20%/1.2 monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps bolder normal italic xx-large/1.2 monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "condensed small-caps calc(30% - 40px)/calc(120% + 1.2em) serif" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps italic bolder semi-expanded larger/calc(120% + 1.2em) monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "100 small-caps normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "normal bolder small-caps extra-condensed 20%/1.2 sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "normal normal ultra-expanded small-caps larger/calc(120% + 1.2em) \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "bold oblique normal normal xx-large/1.2 cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "italic condensed 900 normal calc(30% - 40px)/calc(120% + 1.2em) monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "normal normal small-caps normal calc(30% - 40px)/calc(120% + 1.2em) sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "bold normal normal ultra-condensed larger/calc(120% + 1.2em) sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "bold extra-expanded italic larger/calc(120% + 1.2em) \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps extra-condensed normal 900 20%/1.2 cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps extra-expanded lighter normal larger/calc(120% + 1.2em) serif" should set the property value]
expected: FAIL
[e.style['font'\] = "normal small-caps italic lighter calc(30% - 40px)/calc(120% + 1.2em) \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "normal italic ultra-expanded bold 20%/1.2 monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "normal normal xx-large/1.2 cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "normal condensed normal small-caps calc(30% - 40px)/calc(120% + 1.2em) fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "normal small-caps bold italic larger/calc(120% + 1.2em) fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "normal small-caps oblique normal 20%/1.2 Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps expanded xx-large/1.2 Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "extra-condensed oblique lighter small-caps 20%/1.2 \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "normal expanded oblique normal xx-large/1.2 \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "normal extra-condensed normal oblique 20%/1.2 cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps normal normal larger/calc(120% + 1.2em) sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "expanded normal oblique small-caps xx-large/1.2 serif" should set the property value]
expected: FAIL
[e.style['font'\] = "oblique small-caps normal normal xx-large/1.2 fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "900 oblique small-caps normal 20%/1.2 \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "normal normal extra-expanded italic xx-large/1.2 Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps bold oblique extra-condensed 20%/1.2 sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "expanded small-caps normal italic xx-large/1.2 fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "italic 100 extra-expanded larger/calc(120% + 1.2em) \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "normal expanded bold normal xx-large/1.2 serif" should set the property value]
expected: FAIL
[e.style['font'\] = "normal 900 oblique calc(30% - 40px)/calc(120% + 1.2em) sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "normal small-caps expanded oblique calc(30% - 40px)/calc(120% + 1.2em) serif" should set the property value]
expected: FAIL
[e.style['font'\] = "condensed normal small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "extra-expanded small-caps normal 100 larger/calc(120% + 1.2em) monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "italic normal 100 condensed larger/calc(120% + 1.2em) fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "normal normal normal bold calc(30% - 40px)/calc(120% + 1.2em) serif" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps normal normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "normal small-caps calc(30% - 40px)/calc(120% + 1.2em) Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps lighter normal ultra-condensed larger/calc(120% + 1.2em) Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "normal bold expanded small-caps xx-large/1.2 Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "normal extra-expanded larger/calc(120% + 1.2em) \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps normal bolder extra-expanded calc(30% - 40px)/calc(120% + 1.2em) \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "italic normal small-caps extra-condensed calc(30% - 40px)/calc(120% + 1.2em) \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "normal normal 100 larger/calc(120% + 1.2em) Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "extra-expanded normal italic lighter larger/calc(120% + 1.2em) sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "normal small-caps normal oblique xx-large/1.2 sans-serif" should set the property value]
expected: FAIL
[e.style['font'\] = "bolder italic normal small-caps larger/calc(120% + 1.2em) fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "normal normal oblique small-caps larger/calc(120% + 1.2em) monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "normal lighter italic ultra-condensed xx-large/1.2 monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "normal 100 normal ultra-expanded 20%/1.2 serif" should set the property value]
expected: FAIL
[e.style['font'\] = "normal italic small-caps condensed 20%/1.2 fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "normal italic normal extra-condensed xx-large/1.2 \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "normal normal italic normal xx-large/1.2 fantasy" should set the property value]
expected: FAIL
[e.style['font'\] = "small-caps extra-expanded normal larger/calc(120% + 1.2em) \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "bolder condensed normal calc(30% - 40px)/calc(120% + 1.2em) cursive" should set the property value]
expected: FAIL
[e.style['font'\] = "normal small-caps semi-expanded normal 20%/1.2 \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "expanded normal xx-large/1.2 \\"FB Armada\\"" should set the property value]
expected: FAIL
[e.style['font'\] = "bolder normal normal calc(30% - 40px)/calc(120% + 1.2em) monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "expanded bolder small-caps xx-large/1.2 Menu" should set the property value]
expected: FAIL
[e.style['font'\] = "normal normal small-caps condensed xx-large/1.2 monospace" should set the property value]
expected: FAIL
[e.style['font'\] = "900 expanded normal small-caps xx-large/1.2 Menu" should set the property value]
expected: FAIL

View file

@ -1,2 +0,0 @@
[matchMedia-display-none-iframe.html]
expected: ERROR

View file

@ -0,0 +1,4 @@
[font-shorthand-serialization.html]
[The font shorthand should be serialized just like any other shorthand.]
expected: FAIL

View file

@ -1,2 +0,0 @@
[contenttype_txt.html]
expected: CRASH

View file

@ -26,3 +26,21 @@
[Reparenting an element into a descendant shadow scope nullifies the element reference.]
expected: FAIL
[shadow DOM behaviour for FrozenArray element reflection.]
expected: FAIL
[aria-flowto.]
expected: FAIL
[aria-labelledby.]
expected: FAIL
[aria-owns.]
expected: FAIL
[aria-controls.]
expected: FAIL
[aria-describedby.]
expected: FAIL

View file

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

View file

@ -56,3 +56,6 @@
[separate text/javascript x/x]
expected: FAIL
[separate text/javascript;charset=windows-1252 error text/javascript]
expected: FAIL

View file

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

@ -1,4 +0,0 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
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,4 +1,5 @@
[creating_browsing_context_test_01.html]
expected: TIMEOUT
[first argument: absolute url]
expected: FAIL
expected: TIMEOUT

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT

View file

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

View file

@ -0,0 +1,5 @@
[skip-not-fully-active.html]
expected: TIMEOUT
[Autofocus element in not-fully-active document should be skipped while flusing.]
expected: TIMEOUT

View file

@ -1,11 +1,7 @@
[form-submission-algorithm.html]
expected: TIMEOUT
[If form's firing submission events is true, then return; 'submit' event]
expected: FAIL
[If form's firing submission events is true, then return; 'invalid' event]
expected: FAIL
[Cannot navigate (after constructing the entry list)]
expected: TIMEOUT

View file

@ -0,0 +1,7 @@
[toggleEvent.html]
[Calling open twice on 'details' fires only one toggle event]
expected: FAIL
[Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
expected: FAIL

View file

@ -0,0 +1,5 @@
[document-close-with-pending-script.html]
expected: TIMEOUT
[document.close called while a script is pending]
expected: TIMEOUT

View file

@ -62,3 +62,9 @@
[X SNR (-675.9249049743026 dB) is not greater than or equal to 65.737. Got -675.9249049743026.]
expected: FAIL
[X SNR (-85.12581379232168 dB) is not greater than or equal to 65.737. Got -85.12581379232168.]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t1.9724091887474060e-1\t9.5236867666244507e-1\t7.5512775778770447e-1\t7.9289436569253091e-1\t3.8985999999999999e-3\n\t[60\]\t-2.2450675070285797e-1\t-5.8084785938262939e-1\t3.5634110867977142e-1\t6.1348441407448528e-1\t3.8985999999999999e-3\n\t[90\]\t-3.7808802723884583e-1\t-5.9811043739318848e-1\t2.2002241015434265e-1\t3.6786251568070089e-1\t3.8985999999999999e-3\n\t[120\]\t7.6881676912307739e-1\t9.4563448429107666e-1\t1.7681771516799927e-1\t1.8698315057805445e-1\t3.8985999999999999e-3\n\t[151\]\t5.4644601186737418e-4\t-4.1306272149085999e-2\t4.1852718160953373e-2\t1.0132291292202573e+0\t3.8985999999999999e-3\n\t...and 1419 more errors.\n\tMax AbsError of 2.6133897807472348e+6 at index of 39268.\n\t[39268\]\t-2.6133907500000000e+6\t-9.6925276517868042e-1\t2.6133897807472348e+6\t2.6962933453849470e+6\t3.8985999999999999e-3\n\tMax RelError of 2.6962933453849470e+6 at index of 39268.\n\t[39268\]\t-2.6133907500000000e+6\t-9.6925276517868042e-1\t2.6133897807472348e+6\t2.6962933453849470e+6\t3.8985999999999999e-3\n]
expected: FAIL

View file

@ -0,0 +1,4 @@
[WorkerGlobalScope-close.html]
[Test sending a message after closing.]
expected: FAIL

View file

@ -0,0 +1,2 @@
[Worker-constructor.html]
expected: ERROR

View file

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

View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/CSS22/box.html#collapsing-margins">
<link rel="help" href="https://www.w3.org/TR/CSS22/visudet.html#the-height-property">
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1001663">
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="position:relative; width:100px; height:100px; background:red;">
<div style="position:absolute; width:100%; background:green;">
<div style="height:100%;">
<div style="margin-bottom:80px; height:20px;"></div>
</div>
</div>
</div>

View file

@ -0,0 +1,42 @@
<!DOCTYPE html>
<title>Definite sizes with fixed flex-basis</title>
<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#definite-sizes">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht" />
<meta name="flags" content="" />
<meta name="assert" content="In a column flexbox, the height of a fully inflexible item with fixed flex-basis is definite even when the heights of the item and the container are indefinite." />
<style>
x-flexbox {
display: flex;
flex-direction: column;
}
x-item {
flex: 0 0 100px;
}
x-item>div {
width: 100px;
height: 100%;
background: green;
}
#reference-overlapped-red {
position: absolute;
background-color: red;
width: 100px;
height: 100px;
z-index: -1;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div id="reference-overlapped-red"></div>
<x-flexbox>
<x-item>
<div></div>
</x-item>
</x-flexbox>

View file

@ -22,12 +22,6 @@
<script>
'use strict';
const initial_style = 'normal';
const initial_variant = 'normal';
const initial_weight = 'normal';
const initial_stretch = 'normal';
const initial_line_height = 'normal';
// Firefox and Edge 18 serialize these as supplied.
// Blink and Safari have implementation-dependent or platform-dependent serializations.
function test_system_font(keyword) {
@ -178,27 +172,19 @@ function test_specific(prefix) {
if (style) {
canonical.push(style);
reference.style.fontStyle = style;
} else {
canonical.push(initial_style);
}
if (variant) {
canonical.push(variant);
reference.style.fontVariant = style;
} else {
canonical.push(initial_variant);
}
if (weight) {
canonical.push(compute_weight(weight));
reference.style.fontWeight = style;
} else {
canonical.push(compute_weight(initial_weight));
}
if (stretch) {
canonical.push(stretch);
reference.style.fontStretch = style;
} else {
canonical.push(initial_stretch);
}
const size = generate_size();
@ -215,15 +201,19 @@ function test_specific(prefix) {
parts.push(family);
reference.style.fontFamily = family;
canonical.push(getComputedStyle(reference).fontSize + '/' + getComputedStyle(reference).lineHeight);
if (!line_height || line_height === 'normal') {
canonical.push(getComputedStyle(reference).fontSize);
} else {
// Implementations differ on adjacent space when serializing '/'
// https://github.com/w3c/csswg-drafts/issues/4282
canonical.push(getComputedStyle(reference).fontSize + ' / ' + getComputedStyle(reference).lineHeight);
}
canonical.push(family);
reference.remove();
// Implementations differ on adjacent space when serializing '/'
// https://github.com/w3c/csswg-drafts/issues/4282
const expected = canonical.join(' ');
test_computed_value('font', parts.join(' '), [expected, expected.replace('/', ' / ')]);
test_computed_value('font', parts.join(' '), canonical.join(' '));
}
// Font style, variant, weight and stretch may appear in any order.

View file

@ -23,6 +23,7 @@ test_invalid_value('font', 'normal normal normal normal normal 20%/1.2 \"FB Arma
test_invalid_value('font', 'italic small-caps lighter condensed smaller');
test_invalid_value('font', 'normal 100 semi-condensed oblique small-caps Menu');
test_invalid_value('font', '100% larger / 2 fantasy');
</script>
</body>
</html>

View file

@ -167,7 +167,7 @@ function test_specific(prefix) {
if (lineHeight === 'normal')
canonical.push(size);
else
canonical.push(size + '/' + lineHeight);
canonical.push(size + ' / ' + lineHeight);
} else {
parts.push(size);
canonical.push(size);

View file

@ -21,6 +21,7 @@
border-width: 3px 7px 9px 11px;
border-color: yellow;
border-style: solid;
margin: 1px 3px 7px 9px;
}
</style>
<!-- test all combinations of minmax from section 10.4 table at
@ -30,77 +31,77 @@
<!-- iframe: intrinsic size is 300x150, no aspect ratio -->
<div class="container">
<iframe class="target"
data-expected-width="338" data-expected-height="182" data-offset-y="18" data-offset-x="62"
data-expected-width="338" data-expected-height="182" data-offset-y="11" data-offset-x="59"
>
</iframe>
</div>
<!-- spec 1: w > max-width -->
<div class="container">
<iframe class="target" style="max-width:100px"
data-expected-width="138" data-expected-height="182" data-offset-y="18" data-offset-x="262"
data-expected-width="138" data-expected-height="182" data-offset-y="11" data-offset-x="259"
>
</iframe>
</div>
<!-- spec 2: w < min-width -->
<div class="container">
<iframe class="target" style="min-width: 350px"
data-expected-width="388" data-expected-height="182" data-offset-y="18" data-offset-x="12"
data-expected-width="388" data-expected-height="182" data-offset-y="11" data-offset-x="9"
>
</iframe>
</div>
<!-- spec 3: h > max-height -->
<div class="container">
<iframe class="target" style="max-height: 150px"
data-expected-width="338" data-expected-height="182" data-offset-y="18" data-offset-x="62"
data-expected-width="338" data-expected-height="182" data-offset-y="11" data-offset-x="59"
>
</iframe>
</div>
<!-- spec 4: h < min-height -->
<div class="container">
<iframe class="target" style="min-height: 165px"
data-expected-width="338" data-expected-height="197" data-offset-y="3" data-offset-x="62"
data-expected-width="338" data-expected-height="197" data-offset-y="-4" data-offset-x="59"
>
</iframe>
</div>
<!-- spec 5: (w > max-width) and (h > max-height), where (max-width/w ≤ max-height/h) -->
<div class="container">
<iframe class="target" style="max-width: 240px; max-height: 135px"
data-expected-width="278" data-expected-height="167" data-offset-y="33" data-offset-x="122"
data-expected-width="278" data-expected-height="167" data-offset-y="26" data-offset-x="119"
>
</iframe>
</div>
<!-- spec 6: (w > max-width) and (h > max-height), where (max-width/w > max-height/h) -->
<div class="container">
<iframe class="target" style="max-width: 270px; max-height: 120px"
data-expected-width="308" data-expected-height="152" data-offset-y="48" data-offset-x="92"
data-expected-width="308" data-expected-height="152" data-offset-y="41" data-offset-x="89"
>
</iframe>
</div>
<!-- spec 7: (w < min-width) and (h < min-height), where (min-width/w ≤ min-height/h) -->
<div class="container">
<iframe class="target" style="min-width: 360px; min-height: 165px"
data-expected-width="398" data-expected-height="197" data-offset-y="3" data-offset-x="2"
data-expected-width="398" data-expected-height="197" data-offset-y="-4" data-offset-x="-1"
>
</iframe>
</div>
<!-- spec 8: (w < min-width) and (h < min-height), where (min-width/w > min-height/h) -->
<div class="container">
<iframe class="target" style="min-width: 330px; min-height: 180px"
data-expected-width="368" data-expected-height="212" data-offset-y="-12" data-offset-x="32"
data-expected-width="368" data-expected-height="212" data-offset-y="-19" data-offset-x="29"
>
</iframe>
</div>
<!-- spec 9: (w < min-width) and (h > max-height) -->
<div class="container">
<iframe class="target" style="min-width: 330px; max-height: 135px"
data-expected-width="368" data-expected-height="167" data-offset-y="33" data-offset-x="32"
data-expected-width="368" data-expected-height="167" data-offset-y="26" data-offset-x="29"
>
</iframe>
</div>
<!-- spec 10: (w > max-width) and (h < min-height) -->
<div class="container">
<iframe class="target" style="max-width: 240px; min-height: 165px"
data-expected-width="278" data-expected-height="197" data-offset-y="3" data-offset-x="122"
data-expected-width="278" data-expected-height="197" data-offset-y="-4" data-offset-x="119"
>
</iframe>
</div>
@ -109,136 +110,136 @@
<!-- image dimensions: 200x150. images has intrinic size and aspect ratio -->
<div class="container">
<img class="target png"
data-expected-width="238" data-expected-height="182" data-offset-y="18" data-offset-x="162"
data-expected-width="238" data-expected-height="182" data-offset-y="11" data-offset-x="159"
>
</div>
<!-- spec 1: w > max-width -->
<div class="container">
<img class="target png" style="max-width: 180px"
data-expected-width="218" data-expected-height="167" data-offset-y="33" data-offset-x="182"
data-expected-width="218" data-expected-height="167" data-offset-y="26" data-offset-x="179"
>
</div>
<!-- spec 2: w < min-width -->
<div class="container">
<img class="target png" style="min-width: 220px"
data-expected-width="258" data-expected-height="197" data-offset-y="3" data-offset-x="142"
data-expected-width="258" data-expected-height="197" data-offset-y="-4" data-offset-x="139"
>
</div>
<!-- spec 3: h > max-height -->
<div class="container">
<img class="target png" style="max-height: 135px"
data-expected-width="218" data-expected-height="167" data-offset-y="33" data-offset-x="182"
data-expected-width="218" data-expected-height="167" data-offset-y="26" data-offset-x="179"
>
</div>
<!-- spec 4: h < min-height -->
<div class="container">
<img class="target png" style="min-height: 165px"
data-expected-width="258" data-expected-height="197" data-offset-y="3" data-offset-x="142"
data-expected-width="258" data-expected-height="197" data-offset-y="-4" data-offset-x="139"
>
</div>
<!-- spec 5: (w > max-width) and (h > max-height), where (max-width/w ≤ max-height/h) -->
<div class="container">
<img class="target png" style="max-width: 160px; max-height: 135px"
data-expected-width="198" data-expected-height="152" data-offset-y="48" data-offset-x="202"
data-expected-width="198" data-expected-height="152" data-offset-y="41" data-offset-x="199"
>
</div>
<!-- spec 6: (w > max-width) and (h > max-height), where (max-width/w > max-height/h) -->
<div class="container">
<img class="target png" style="max-width: 180px; max-height: 120px"
data-expected-width="198" data-expected-height="152" data-offset-y="48" data-offset-x="202"
data-expected-width="198" data-expected-height="152" data-offset-y="41" data-offset-x="199"
>
</div>
<!-- spec 7: (w < min-width) and (h < min-height), where (min-width/w ≤ min-height/h) -->
<div class="container">
<img class="target png" style="min-width: 240px;min-height: 165px"
data-expected-width="278" data-expected-height="212" data-offset-y="-12" data-offset-x="122"
data-expected-width="278" data-expected-height="212" data-offset-y="-19" data-offset-x="119"
>
</div>
<!-- spec 8: (w < min-width) and (h < min-height), where (min-width/w > min-height/h) -->
<div class="container">
<img class="target png" style="min-width: 220px;min-height: 180px"
data-expected-width="278" data-expected-height="212" data-offset-y="-12" data-offset-x="122"
data-expected-width="278" data-expected-height="212" data-offset-y="-19" data-offset-x="119"
>
</div>
<!-- spec 9: (w < min-width) and (h > max-height) -->
<div class="container">
<img class="target png" style="min-width: 220px; max-height: 130px"
data-expected-width="258" data-expected-height="162" data-offset-y="38" data-offset-x="142"
data-expected-width="258" data-expected-height="162" data-offset-y="31" data-offset-x="139"
>
</div>
<!-- spec 10: (w > max-width) and (h < min-height) -->
<div class="container">
<img class="target png" style="max-width: 180px; min-height: 165px"
data-expected-width="218" data-expected-height="197" data-offset-y="3" data-offset-x="182"
data-expected-width="218" data-expected-height="197" data-offset-y="-4" data-offset-x="179"
>
</div>
<!-- IMG SVG tests -->
<!-- image dimensions: 200x150. images has no intrinic size and no aspect ratio -->
<div class="container">
<img class="target svg"
data-expected-width="338" data-expected-height="182" data-offset-y="18" data-offset-x="62"
data-expected-width="338" data-expected-height="182" data-offset-y="11" data-offset-x="59"
>
</div>
<!-- spec 1: w > max-width -->
<div class="container">
<img class="target svg" style="max-width: 180px"
data-expected-width="218" data-expected-height="182" data-offset-y="18" data-offset-x="182"
data-expected-width="218" data-expected-height="182" data-offset-y="11" data-offset-x="179"
>
</div>
<!-- spec 2: w < min-width -->
<div class="container">
<img class="target svg" style="min-width: 220px"
data-expected-width="338" data-expected-height="182" data-offset-y="18" data-offset-x="62"
data-expected-width="338" data-expected-height="182" data-offset-y="11" data-offset-x="59"
>
</div>
<!-- spec 3: h > max-height -->
<div class="container">
<img class="target svg" style="max-height: 135px"
data-expected-width="338" data-expected-height="167" data-offset-y="33" data-offset-x="62"
data-expected-width="338" data-expected-height="167" data-offset-y="26" data-offset-x="59"
>
</div>
<!-- spec 4: h < min-height -->
<div class="container">
<img class="target svg" style="min-height: 165px"
data-expected-width="338" data-expected-height="197" data-offset-y="3" data-offset-x="62"
data-expected-width="338" data-expected-height="197" data-offset-y="-4" data-offset-x="59"
>
</div>
<!-- spec 5: (w > max-width) and (h > max-height), where (max-width/w ≤ max-height/h) -->
<div class="container">
<img class="target svg" style="max-width: 160px; max-height: 135px"
data-expected-width="198" data-expected-height="167" data-offset-y="33" data-offset-x="202"
data-expected-width="198" data-expected-height="167" data-offset-y="26" data-offset-x="199"
>
</div>
<!-- spec 6: (w > max-width) and (h > max-height), where (max-width/w > max-height/h) -->
<div class="container">
<img class="target svg" style="max-width: 180px; max-height: 120px"
data-expected-width="218" data-expected-height="152" data-offset-y="48" data-offset-x="182"
data-expected-width="218" data-expected-height="152" data-offset-y="41" data-offset-x="179"
>
</div>
<!-- spec 7: (w < min-width) and (h < min-height), where (min-width/w ≤ min-height/h) -->
<div class="container">
<img class="target svg" style="min-width: 240px;min-height: 165px"
data-expected-width="338" data-expected-height="197" data-offset-y="3" data-offset-x="62"
data-expected-width="338" data-expected-height="197" data-offset-y="-4" data-offset-x="59"
>
</div>
<!-- spec 8: (w < min-width) and (h < min-height), where (min-width/w > min-height/h) -->
<div class="container">
<img class="target svg" style="min-width: 220px;min-height: 180px"
data-expected-width="338" data-expected-height="212" data-offset-y="-12" data-offset-x="62"
data-expected-width="338" data-expected-height="212" data-offset-y="-19" data-offset-x="59"
>
</div>
<!-- spec 9: (w < min-width) and (h > max-height) -->
<div class="container">
<img class="target svg" style="min-width: 220px; max-height: 130px"
data-expected-width="338" data-expected-height="162" data-offset-y="38" data-offset-x="62"
data-expected-width="338" data-expected-height="162" data-offset-y="31" data-offset-x="59"
>
</div>
<!-- spec 10: (w > max-width) and (h < min-height) -->
<div class="container">
<img class="target svg" style="max-width: 180px; min-height: 165px"
data-expected-width="218" data-expected-height="197" data-offset-y="3" data-offset-x="182"
data-expected-width="218" data-expected-height="197" data-offset-y="-4" data-offset-x="179"
>
</div>
<!-- SVG tests -->
@ -247,26 +248,26 @@
<!-- Just viewbox. Has intrinsic aspect ratio, but no width/height -->
<div class="container">
<img class="target" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' %3E%3Crect width='100%' height='100%' style='fill:rgb(0,255,0);'/%3E%3C/svg%3E" style=""
data-expected-width="338" data-expected-height="182" data-offset-y="18" data-offset-x="62"
data-expected-width="338" data-expected-height="182" data-offset-y="11" data-offset-x="59"
>
</div>
<!-- Just viewbox. Has aspect_ration, but no intrinsic size
inline_width defaults to container width -->
<div class="container">
<img class="target" src="data:image/svg+xml,%3Csvg viewBox='0 0 100 10' xmlns='http://www.w3.org/2000/svg' %3E%3Crect width='100%' height='100%' style='fill:rgb(0,255,0);'/%3E%3C/svg%3E"
data-expected-width="400" data-expected-height="68" data-offset-y="132" data-offset-x="0"
data-expected-width="388" data-expected-height="67" data-offset-y="126" data-offset-x="9"
>
</div>
<!-- Viewbox + svg width. Has aspect_ratio and width. Height is scaled -->
<div class="container">
<img class="target" src="data:image/svg+xml,%3Csvg viewBox='0 0 100 10' width='100px' xmlns='http://www.w3.org/2000/svg' %3E%3Crect width='100%' height='100%' style='fill:rgb(0,255,0);'/%3E%3C/svg%3E"
data-expected-width="138" data-expected-height="42" data-offset-y="158" data-offset-x="262"
data-expected-width="138" data-expected-height="42" data-offset-y="151" data-offset-x="259"
>
</div>
<!-- Viewbox + svg height. Has aspect_ratio and height. Width is scaled -->
<div class="container">
<img class="target" src="data:image/svg+xml,%3Csvg viewBox='0 0 100 10' height='20px' xmlns='http://www.w3.org/2000/svg' %3E%3Crect width='100%' height='100%' style='fill:rgb(0,255,0);'/%3E%3C/svg%3E"
data-expected-width="238" data-expected-height="52" data-offset-y="148" data-offset-x="162"
data-expected-width="238" data-expected-height="52" data-offset-y="141" data-offset-x="159"
>
</div>
<script>

View file

@ -37,7 +37,7 @@ var validProperties = {
boxShadow: 'rgb(10, 20, 30) 10px 20px 30px 40px inset',
color: 'rgba(10, 20, 30, 0.4)',
float: 'right',
font: 'italic small-caps 900 normal 10px / 20px sans-serif',
font: 'italic small-caps 900 10px / 20px sans-serif',
fontFeatureSettings: '"vert" 2',
fontSizeAdjust: '0.5',
fontKerning: 'none',

View file

@ -0,0 +1,70 @@
<!DOCTYPE html>
<title>
Snap to a visible area only even when there is a closer snap point for an area
that is closer but not visible (using both axes snap type)
</title>
<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#snap-scope"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
div {
position: absolute;
margin: 0px;
}
#scroller {
height: 600px;
width: 600px;
overflow: scroll;
scroll-snap-type: both mandatory;
}
#space {
width: 2000px;
height: 2000px;
}
.snap {
width: 200px;
height: 200px;
background-color: blue;
scroll-snap-align: start;
}
#left-top {
left: 0px;
top: 0px;
}
#left-bottom {
left: 0px;
top: 800px;
}
#right-top {
left: 800px;
top: 0px;
}
</style>
<div id="scroller">
<div id="space"></div>
<div id="left-top" class="snap"></div>
<div id="left-bottom" class="snap"></div>
<div id="right-top" class="snap"></div>
</div>
<script>
test(() => {
const scroller = document.getElementById("scroller");
scroller.scrollTo(0, 0);
assert_equals(scroller.scrollLeft, 0);
assert_equals(scroller.scrollTop, 0);
scroller.scrollTo(500, 600);
assert_equals(scroller.scrollLeft, 0);
assert_equals(scroller.scrollTop, 800);
scroller.scrollTo(600, 500);
assert_equals(scroller.scrollLeft, 800);
assert_equals(scroller.scrollTop, 0);
}, 'Only snap to visible areas in the case where taking the closest snap point of \
each axis does not snap to a visible area');
</script>

View file

@ -1,5 +1,9 @@
<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1" />
<title>
Snap to an area where the element's scroll-margin is visible but not the
element itself (using both axes snap type)
</title>
<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#snap-scope"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
@ -7,12 +11,14 @@ div {
position: absolute;
margin: 0px;
}
#scroller {
height: 600px;
width: 600px;
overflow: scroll;
scroll-snap-type: both mandatory;
}
#space {
width: 2000px;
height: 2000px;
@ -30,57 +36,41 @@ div {
top: 0px;
}
#right-top {
left: 800px;
top: 0px;
}
#left-bottom {
left: 0px;
top: 800px;
/* 800px scroll-margin makes the snap area span to the right end of the
right-top area */
scroll-margin-right: 800px;
}
#right-bottom {
left: 1800px;
top: 1800px;
scroll-margin-top: 1000px;
scroll-margin-left: 1000px;
#right-top {
left: 800px;
top: 0px;
/* 800px scroll-margin makes the snap area span to the bottom end of the
left-bottom area */
scroll-margin-bottom: 800px;
}
</style>
<div id="scroller">
<div id="space"></div>
<div id="left-top" class="snap"></div>
<div id="right-top" class="snap"></div>
<div id="left-bottom" class="snap"></div>
<div id="right-bottom" class="snap"></div>
<div id="right-top" class="snap"></div>
</div>
<script>
var scroller = document.getElementById("scroller");
test(() => {
const scroller = document.getElementById("scroller");
scroller.scrollTo(0, 0);
assert_equals(scroller.scrollLeft, 0);
assert_equals(scroller.scrollTop, 0);
scroller.scrollTo(300, 0);
assert_equals(scroller.scrollLeft, 800);
assert_equals(scroller.scrollTop, 0);
}, 'Only snap to visible area on X axis, even when the non-visible ones are closer');
test(() => {
scroller.scrollTo(0, 0);
assert_equals(scroller.scrollLeft, 0);
assert_equals(scroller.scrollTop, 0);
scroller.scrollTo(0, 300);
assert_equals(scroller.scrollLeft, 0);
assert_equals(scroller.scrollTop, 800);
}, 'Only snap to visible area on Y axis, even when the non-visible ones are closer');
test(() => {
scroller.scrollTo(0, 0);
assert_equals(scroller.scrollLeft, 0);
assert_equals(scroller.scrollTop, 0);
scroller.scrollTo(300, 300);
scroller.scrollTo(500, 600);
assert_equals(scroller.scrollLeft, 800);
assert_equals(scroller.scrollTop, 800);
}, 'snap to snap area inflated by scroll-margin, even when the non-visible ones are closer');
scroller.scrollTo(600, 500);
assert_equals(scroller.scrollLeft, 800);
assert_equals(scroller.scrollTop, 800);
}, 'Snap to area such that only the scroll margin from both axes\' areas are \
visible');
</script>

View file

@ -0,0 +1,69 @@
<!DOCTYPE html>
<title>
Snap to an area where the element's scroll-margin is visible but not the
element itself (using x-axis snap type)
</title>
<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#snap-scope"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
div {
position: absolute;
margin: 0px;
}
#scroller {
height: 600px;
width: 600px;
overflow: scroll;
scroll-snap-type: x mandatory;
}
#space {
width: 2000px;
height: 2000px;
}
.snap {
width: 200px;
height: 200px;
background-color: blue;
scroll-snap-align: start;
}
#left-visible {
left: 0px;
top: 0px;
}
#right-visible {
left: 800px;
top: 0px;
}
#middle-margin-visible {
left: 700px;
top: 800px;
/* 300px makes snap area visible with margin but non-visible without it */
scroll-margin-top: 300px;
}
</style>
<div id="scroller">
<div id="space"></div>
<div id="left-visible" class="snap"></div>
<div id="middle-margin-visible" class="snap"></div>
<div id="right-visible" class="snap"></div>
</div>
<script>
test(() => {
const scroller = document.getElementById("scroller");
scroller.scrollTo(0, 0);
assert_equals(scroller.scrollLeft, 0);
assert_equals(scroller.scrollTop, 0);
scroller.scrollTo(500, 0);
assert_equals(scroller.scrollLeft, 700);
assert_equals(scroller.scrollTop, 0);
}, 'Scroll margin should be considered when calculating snap area visibilty \
while snapping on the x-axis');
</script>

View file

@ -0,0 +1,69 @@
<!DOCTYPE html>
<title>
Snap to an area where the element's scroll-margin is visible but not the
element itself (using y-axis snap type)
</title>
<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#snap-scope"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
div {
position: absolute;
margin: 0px;
}
#scroller {
height: 600px;
width: 600px;
overflow: scroll;
scroll-snap-type: y mandatory;
}
#space {
width: 2000px;
height: 2000px;
}
.snap {
width: 200px;
height: 200px;
background-color: blue;
scroll-snap-align: start;
}
#top-visible {
left: 0px;
top: 0px;
}
#bottom-visible {
left: 0px;
top: 800px;
}
#middle-margin-visible {
left: 800px;
top: 700px;
/* 300px makes snap area visible with margin but non-visible without it */
scroll-margin-left: 300px;
}
</style>
<div id="scroller">
<div id="space"></div>
<div id="top-visible" class="snap"></div>
<div id="middle-margin-visible" class="snap"></div>
<div id="bottom-visible" class="snap"></div>
</div>
<script>
test(() => {
const scroller = document.getElementById("scroller");
scroller.scrollTo(0, 0);
assert_equals(scroller.scrollLeft, 0);
assert_equals(scroller.scrollTop, 0);
scroller.scrollTo(0, 500);
assert_equals(scroller.scrollLeft, 0);
assert_equals(scroller.scrollTop, 700);
}, 'Scroll margin should be considered when calculating snap area visibilty \
while snapping on the y-axis');
</script>

View file

@ -0,0 +1,66 @@
<!DOCTYPE html>
<title>
Snap to a visible area only even when there is a closer snap point for an area
that is closer but not visible (using x-axis snap type)
</title>
<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#snap-scope"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
div {
position: absolute;
margin: 0px;
}
#scroller {
height: 600px;
width: 600px;
overflow: scroll;
scroll-snap-type: x mandatory;
}
#space {
width: 2000px;
height: 2000px;
}
.snap {
width: 200px;
height: 200px;
background-color: blue;
scroll-snap-align: start;
}
#left-visible {
left: 0px;
top: 0px;
}
#right-visible {
left: 800px;
top: 0px;
}
#middle-not-visible {
left: 700px;
top: 800px;
}
</style>
<div id="scroller">
<div id="space"></div>
<div id="left-visible" class="snap"></div>
<div id="middle-not-visible" class="snap"></div>
<div id="right-visible" class="snap"></div>
</div>
<script>
test(() => {
const scroller = document.getElementById("scroller");
scroller.scrollTo(0, 0);
assert_equals(scroller.scrollLeft, 0);
assert_equals(scroller.scrollTop, 0);
scroller.scrollTo(500, 0);
assert_equals(scroller.scrollLeft, 800);
assert_equals(scroller.scrollTop, 0);
}, 'Only snap to visible area on X axis, even when the non-visible ones are closer');
</script>

View file

@ -0,0 +1,66 @@
<!DOCTYPE html>
<title>
Snap to a visible area only even when there is a closer snap point for an area
that is closer but not visible (using y-axis snap type)
</title>
<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#snap-scope"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
div {
position: absolute;
margin: 0px;
}
#scroller {
height: 600px;
width: 600px;
overflow: scroll;
scroll-snap-type: y mandatory;
}
#space {
width: 2000px;
height: 2000px;
}
.snap {
width: 200px;
height: 200px;
background-color: blue;
scroll-snap-align: start;
}
#top-visible {
left: 0px;
top: 0px;
}
#bottom-visible {
left: 0px;
top: 800px;
}
#middle-not-visible {
left: 800px;
top: 700px;
}
</style>
<div id="scroller">
<div id="space"></div>
<div id="top-visible" class="snap"></div>
<div id="middle-not-visible" class="snap"></div>
<div id="bottom-visible" class="snap"></div>
</div>
<script>
test(() => {
const scroller = document.getElementById("scroller");
scroller.scrollTo(0, 0);
assert_equals(scroller.scrollLeft, 0);
assert_equals(scroller.scrollTop, 0);
scroller.scrollTo(0, 500);
assert_equals(scroller.scrollLeft, 0);
assert_equals(scroller.scrollTop, 800);
}, 'Only snap to visible area on Y axis, even when the non-visible ones are closer');
</script>

View file

@ -0,0 +1,30 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Text Test: Simple line breaking test</title>
<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
<link rel="help" href="https://crbug.com/1002442">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
p {
width: 460px;
}
</style>
<body>
<p>
abschließend geklärt. Allerdings scheint eine gewisse <b>genetische Veranlagung</b> eine
Zahl der Typ-1-Diabetiker gerade unter Kleinkindern stetig wächst. Daher rücken auch <b>Virusinfektionen</b> in den Fokus
</p>
<script>
test(() => {
for (let e of document.getElementsByTagName('b')) {
let bounds = e.getBoundingClientRect();
assert_less_than_equal(bounds.x + bounds.width, 460);
}
});
</script>
</body>

View file

@ -10,8 +10,8 @@
<script>
test(function() {
var target = document.getElementById('target');
assert_equals(target.style.cssText, 'font: 10px/1 Ahem;');
assert_equals(target.style.font, '10px/1 Ahem');
assert_equals(target.style.cssText, 'font: 10px / 1 Ahem;');
assert_equals(target.style.font, '10px / 1 Ahem');
}, "The font shorthand should be serialized just like any other shorthand.");
</script>
</html>

View file

@ -92,15 +92,6 @@
{at: 1, expect: 'path("M0 0H 300") 600px 0deg'},
{at: 1.5, expect: 'path("M0 0H 300") 650px 0deg'},
]);
// Regression test for crbug.com/994489
test_interpolation({
property: 'offset',
from: 'path("M0 0H 200") 500px auto',
to: 'path("M0 0H 300") 600px 0deg',
}, [
{at: 3.40282e+038, expect: 'path("M0 0H 3.4e+38") 3.36e+07px 0deg'},
]);
</script>
</body>
</html>

View file

@ -263,4 +263,207 @@
assert_equals(lightParent.ariaActiveDescendantElement, optionElement);
}, "Reparenting an element into a descendant shadow scope nullifies the element reference.");
</script>
<div id="myBillingId">Billing</div>
<div>
<div id="myNameId">Name</div>
<input type="text" id="input1" aria-labelledby="myBillingId myNameId"/>
</div>
<div>
<div id="myAddressId">Address</div>
<input type="text" id="input2"/>
</div>
<script>
test(function(t) {
const billingElement = document.getElementById("myBillingId");
const nameElement = document.getElementById("myNameId");
const addressElement = document.getElementById("myAddressId");
const input1 = document.getElementById("input1");
const input2 = document.getElementById("input2");
assert_array_equals(input1.ariaLabelledByElements, [billingElement, nameElement], "parsed content attribute sets element references.");
assert_equals(input2.ariaLabelledByElements, null, "Testing empty content attribute after parsing.");
input2.ariaLabelledByElements = [billingElement, addressElement];
assert_array_equals(input2.ariaLabelledByElements, [billingElement, addressElement], "Testing IDL setter/getter.");
assert_equals(input2.getAttribute("aria-labelledby"), "myBillingId myAddressId");
billingElement.remove();
assert_array_equals(input2.ariaLabelledByElements, [addressElement]);
input2.ariaLabelledByElements = [];
assert_array_equals(input2.ariaLabelledByElements, [], "Testing IDL setter/getter for empty array.");
assert_equals(input2.getAttribute("aria-labelledby"), "");
input1.removeAttribute("aria-labelledby");
assert_equals(input1.ariaLabelledByElements, null);
}, "aria-labelledby.");
</script>
<ul role="tablist">
<li role="presentation"><a id="link1" role="tab" aria-controls="panel1">Tab 1</a></li>
<li role="presentation"><a id="link2" role="tab">Tab 2</a></li>
</ul>
<div role="tabpanel" id="panel1"></div>
<div role="tabpanel" id="panel2"></div>
<script>
test(function(t) {
const link1 = document.getElementById("link1");
const link2 = document.getElementById("link2");
const panel1 = document.getElementById("panel1");
const panel2 = document.getElementById("panel2");
assert_array_equals(link1.ariaControlsElements, [panel1]);
assert_equals(link2.ariaControlsElements, null);
link2.setAttribute("aria-controls", "panel1 panel2");
assert_array_equals(link2.ariaControlsElements, [panel1, panel2]);
link1.ariaControlsElements = [];
assert_equals(link1.getAttribute("aria-controls"), "");
link2.ariaControlsElements = [panel1, panel2];
assert_equals(link2.getAttribute("aria-controls"), "panel1 panel2");
link2.removeAttribute("aria-controls");
assert_equals(link2.ariaControlsElements, null);
}, "aria-controls.");
</script>
<a id="described-link" aria-describedby="description1 description2">Fruit</a>
<div id="description1">Delicious</div>
<div id="description2">Nutritious</div>
<script>
test(function(t) {
const link = document.getElementById("described-link");
const description1 = document.getElementById("description1");
const description2 = document.getElementById("description2");
assert_array_equals(link.ariaDescribedByElements, [description1, description2]);
link.ariaDescribedByElements = [description1, description2];
assert_equals(link.getAttribute("aria-describedby"), "description1 description2");
link.ariaDescribedByElements = [];
assert_equals(link.getAttribute("aria-describedby"), "");
link.setAttribute("aria-describedby", "description1");
assert_array_equals(link.ariaDescribedByElements, [description1]);
link.removeAttribute("aria-describedby");
assert_equals(link.ariaDescribedByElements, null);
}, "aria-describedby.");
</script>
<h2 id="title-heading" aria-flowto="article1 article2">Title</h2>
<div>Next</div>
<article id="article2">Content2</article>
<article id="article1">Content1</article>
<script>
test(function(t) {
const heading = document.getElementById("title-heading");
const article1 = document.getElementById("article1");
const article2 = document.getElementById("article2");
assert_array_equals(heading.ariaFlowToElements, [article1, article2]);
heading.ariaFlowToElements = [article1, article2];
assert_equals(heading.getAttribute("aria-flowto"), "article1 article2");
heading.ariaFlowToElements = [];
assert_equals(heading.getAttribute("aria-flowto"), "");
heading.setAttribute("aria-flowto", "article1");
assert_array_equals(heading.ariaFlowToElements, [article1]);
heading.removeAttribute("aria-flowto");
assert_equals(heading.ariaFlowToElements, null);
}, "aria-flowto.");
</script>
<ul>
<li id="li-owner" aria-owns="child1 child2">Parent</li>
</ul>
<ul>
<li id="child1">Child 1</li>
<li id="child2">Child 2</li>
</ul>
<script>
test(function(t) {
const owner = document.getElementById("li-owner");
const child1 = document.getElementById("child1");
const child2 = document.getElementById("child2");
assert_array_equals(owner.ariaOwnsElements, [child1, child2]);
owner.removeAttribute("aria-owns");
assert_equals(owner.ariaOwnsElements, null);
owner.ariaOwnsElements = [child1, child2];
assert_equals(owner.getAttribute("aria-owns"), "child1 child2");
owner.ariaOwnsElements = [];
assert_equals(owner.getAttribute("aria-owns"), "");
owner.setAttribute("aria-owns", "child1");
assert_array_equals(owner.ariaOwnsElements, [child1]);
}, "aria-owns.");
</script>
<div id="light-dom-container">
<h2 id="light-dom-heading" aria-flowto="shadow-child-1 shadow-child-2">Light DOM Heading</h2>
<div id="shadow-dom-host"></div>
<p id="light-dom-text-1">Light DOM text</p>
<p id="light-dom-text-2">Light DOM text</p>
</div>
<script>
test(function(t) {
const shadowHost = document.getElementById("shadow-dom-host");
const lightDomHeading = document.getElementById("light-dom-heading");
const lightDomText1 = document.getElementById("light-dom-text-1");
const lightDomText2 = document.getElementById("light-dom-text-2");
const shadowRoot = shadowHost.attachShadow({mode: "open"});
const shadowChild1 = document.createElement("article");
shadowChild1.setAttribute("id", "shadow-child-1");
shadowRoot.appendChild(shadowChild1);
const shadowChild2 = document.createElement("article");
shadowChild2.setAttribute("id", "shadow-child-1");
shadowRoot.appendChild(shadowChild2);
// The elements in the content attribute are in a "darker" tree - they
// enter a shadow encapsulation boundary, so should reflect null for
// the content attribute.
assert_equals(lightDomHeading.ariaFlowToElements, null);
// These elements are in a shadow including ancestor, i.e "lighter" tree.
// Valid for the IDL attribute, but content attribute should be null.
shadowChild1.ariaFlowToElements = [lightDomText1, lightDomText2];
assert_equals(shadowChild1.getAttribute("aria-flowto"), "", "empty content attribute for elements that cross shadow boundaries.");
// These IDs belong to a different scope, so the attr-associated-element
// cannot be computed.
shadowChild2.setAttribute("aria-flowto", "light-dom-text-1 light-dom-text-2");
assert_equals(shadowChild2.ariaFlowToElements, null);
// Elements that cross into shadow DOM are dropped, only reflect the valid
// elements in IDL and in the content attribute.
lightDomHeading.ariaFlowToElements = [shadowChild1, shadowChild2, lightDomText1, lightDomText2];
assert_array_equals(lightDomHeading.ariaFlowToElements, [lightDomText1, lightDomText2]);
assert_equals(lightDomHeading.getAttribute("aria-flowto"), "light-dom-text-1 light-dom-text-2", "empty content attribute if any given elements cross shadow boundaries");
// Using a mixture of elements in the same scope and in a shadow including
// ancestor should set the IDL attribute, but should reflect the empty
// string in the content attribute.
shadowChild1.removeAttribute("aria-flowto");
shadowChild1.ariaFlowToElements = [shadowChild1, lightDomText1];
assert_equals(shadowChild1.getAttribute("aria-flowto"), "", "Setting IDL elements with a mix of scopes should reflect an empty string in the content attribute")
}, "shadow DOM behaviour for FrozenArray element reflection.");
</script>
</html>

View file

@ -17,25 +17,27 @@
}
test(function() { assert_true(testSet('foo', 'data-foo')); },
"Setting element.dataset['foo'] should also change the value of element.getAttribute('data-foo')'");
"Setting element.dataset['foo'] should also change the value of element.getAttribute('data-foo')");
test(function() { assert_true(testSet('fooBar', 'data-foo-bar')); },
"Setting element.dataset['fooBar'] should also change the value of element.getAttribute('data-foo-bar')'");
"Setting element.dataset['fooBar'] should also change the value of element.getAttribute('data-foo-bar')");
test(function() { assert_true(testSet('-', 'data--')); },
"Setting element.dataset['-'] should also change the value of element.getAttribute('data--')'");
"Setting element.dataset['-'] should also change the value of element.getAttribute('data--')");
test(function() { assert_true(testSet('Foo', 'data--foo')); },
"Setting element.dataset['Foo'] should also change the value of element.getAttribute('data--foo')'");
"Setting element.dataset['Foo'] should also change the value of element.getAttribute('data--foo')");
test(function() { assert_true(testSet('-Foo', 'data---foo')); },
"Setting element.dataset['-Foo'] should also change the value of element.getAttribute('data---foo')'");
"Setting element.dataset['-Foo'] should also change the value of element.getAttribute('data---foo')");
test(function() { assert_true(testSet('', 'data-')); },
"Setting element.dataset[''] should also change the value of element.getAttribute('data-')'");
"Setting element.dataset[''] should also change the value of element.getAttribute('data-')");
test(function() { assert_true(testSet('\xE0', 'data-\xE0')); },
"Setting element.dataset['\xE0'] should also change the value of element.getAttribute('data-\xE0')'");
"Setting element.dataset['\xE0'] should also change the value of element.getAttribute('data-\xE0')");
test(function() { assert_throws('SYNTAX_ERR', function() { testSet('-foo', 'dummy') }); },
"Setting element.dataset['-foo'] should throw a SYNTAX_ERR'");
"Setting element.dataset['-foo'] should throw a SYNTAX_ERR");
test(function() { assert_throws('INVALID_CHARACTER_ERR', function() { testSet('foo\x20', 'dummy') }); },
"Setting element.dataset['foo\x20'] should throw an INVALID_CHARACTER_ERR'");
test(function() { assert_throws('INVALID_CHARACTER_ERR', function() { testSet('foo\uF900', 'dummy') }); },
"Setting element.dataset['foo\uF900'] should throw an INVALID_CHARACTER_ERR'");
"Setting element.dataset['foo\x20'] should throw an INVALID_CHARACTER_ERR");
test(function() { assert_throws('INVALID_CHARACTER_ERR', function() { testSet('\u037Efoo', 'dummy') }); },
"Setting element.dataset['\u037Efoo'] should throw an INVALID_CHARACTER_ERR");
test(function() { assert_true(testSet('\u0BC6foo', 'data-\u0BC6foo')); },
"Setting element.dataset['\u0BC6foo'] should also change the value of element.getAttribute('\u0BC6foo')");
</script>
</body>

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<script src="/common/get-host-info.sub.js"></script>
<iframe id="iframe" width="200" height="100"></iframe>
<script>
iframe.src =
get_host_info().ORIGIN + "/html/semantics/forms/autofocus/resources/grand-child-autofocus.html";
window.addEventListener("message", event => {
if (event.data == "grand_child_loaded") {
parent.postMessage("ready", "*");
} else if (event.data == "report_focus_state") {
frames[0].postMessage("report_focus_state", "*");
} else if (event.data == "grand_child_is_focused" ||
event.data == "grand_child_is_not_focused") {
parent.postMessage(event.data, "*");
}
});
</script>

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<input id="target" value="This should be focused!" autofocus></input>
<script>
let got_focus = false;
target.addEventListener("focus", () => got_focus = true);
window.addEventListener("load", () => {
parent.postMessage("grand_child_loaded", "*");
});
window.addEventListener("message", event => {
if (event.data == "report_focus_state") {
let msg = got_focus ? "grand_child_is_focused" : "grand_child_is_not_focused";
parent.postMessage(msg, "*");
}
});
</script>

View file

@ -0,0 +1,46 @@
<!doctype html>
<html>
<head>
<meta charset=utf-8>
<meta name="assert" content="`autofocus` should work in the same origin iframe even if there is a cross-origin iframe between the parent and the same origin iframe">
<title>autofocus in the same origin grand child iframe</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="/common/get-host-info.sub.js"></script>
</head>
<body>
<h1>Autofocus should work in the same origin grand child iframe.</h1>
<iframe id="child" width="200" height="100"></iframe>
<script>
let parent_loaded = false;
let grand_child_loaded = false;
async_test(function(t) {
function pingChildIfBothFramesLoaded() {
if (parent_loaded && grand_child_loaded)
frames[0].postMessage("report_focus_state", "*");
}
window.addEventListener("load", t.step_func(event => {
parent_loaded = true;
pingChildIfBothFramesLoaded();
}));
window.addEventListener("message", t.step_func(event => {
if (event.data == "ready") {
grand_child_loaded = true;
pingChildIfBothFramesLoaded();
} else if (event.data == "grand_child_is_focused") {
t.done();
} else if (event.data == "grand_child_is_not_focused") {
assert_unreached("The iframe shouldn't get focus");
}
}));
document.getElementById("child").src =
get_host_info().HTTP_NOTSAMESITE_ORIGIN + "/html/semantics/forms/autofocus/resources/child-iframe.html";
}, "Autofocus should work in the same origin grand child iframe");
</script>
</body>
</html>

View file

@ -8,11 +8,19 @@
<script>
'use strict';
promise_test(async () => {
let doc = document.cloneNode(false);
doc.appendChild(doc.createElement('html'))
doc.firstChild.innerHTML = '<body><input autofocus/></body>';
await waitUntilStableAutofocusState();
assert_equals(doc.activeElement, doc.body);
}, 'Autofocus element in not-fully-active document should not be queued.');
promise_test(async () => {
let iframe = document.querySelector('iframe');
let iframeDocument = iframe.contentDocument;
await waitForLoad(window);
assert_not_equals(document.activeElement, iframe);
assert_equals(iframeDocument.activeElement, iframeDocument.body);
}, 'Autofocus element in not-fully-active document should be skipped.');
}, 'Autofocus element in not-fully-active document should be skipped while flusing.');
</script>

View file

@ -0,0 +1,67 @@
<!doctype html>
<meta charset=utf-8>
<title>document.close called while a script is pending</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<body>
<script>
window.t = async_test();
// We want start a document load, create an non-blocking script load inside
// it, have the parser complete, then call document.open()/document.close()
// after the parser is done but before the non-blocking script load
// completes. After we do that, the document should reach the 'complete'
// ready state and the iframe's load event should fire.
var loadFired = false;
var i;
var finish = t.step_func_done(() => {
assert_equals(loadFired, true, "Should have fired a load event");
assert_equals(i.contentDocument.readyState, "complete",
"Should be fully loaded");
});
var checkForLoad = t.step_func(() => {
if (loadFired) {
finish();
} else {
i.addEventListener("load", finish);
}
});
window.parserDone = t.step_func(() => {
var doc = i.contentDocument;
i.onload = () => { loadFired = true; }
doc.open();
doc.close();
// It's not very clearly specced whether the document is
// supposed to be fully loaded at this point or not, so allow
// that to be the case, or to happen soonish.
assert_true(doc.readyState == "interactive" ||
doc.readyState == "complete", "Should be almost loaded");
if (doc.readyState == "complete") {
checkForLoad();
} else {
doc.addEventListener("readystatechange", checkForLoad);
}
});
t.step(() => {
i = document.createElement("iframe");
i.srcdoc = `
<script>
parent.t.step(() => {
var s = document.createElement("script");
s.src = "/common/slow.py";
document.documentElement.appendChild(s);
// Call into the parent async, so we finish our "end of parse"
// work before it runs.
document.addEventListener(
"DOMContentLoaded",
() => parent.t.step_timeout(parent.parserDone, 0));
});
<\/script>
`;
document.body.appendChild(i);
});
</script>
</body>

View file

@ -1,10 +1,8 @@
[allowed-to-play.html]
expected:
if product == "edge_webdriver": TIMEOUT
if product == "safari": ERROR # https://bugs.webkit.org/show_bug.cgi?id=190775
[<audio> autoplay]
expected:
if product == "edge_webdriver": TIMEOUT
if product == "safari": FAIL # https://bugs.webkit.org/show_bug.cgi?id=190775

View file

@ -1,9 +1,4 @@
[html-elements.html]
[(pre-req for comparison tests) all CSS short-hand supported]
expected:
if product == "edge_webdriver": FAIL
[Compare CSS span definitions (only valid if pre-reqs pass)]
expected:
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=187052

View file

@ -1,4 +0,0 @@
[size.html]
type: reftest
expected:
if product == "edge_webdriver": FAIL # https://github.com/web-platform-tests/wpt/issues/15159

View file

@ -1,7 +1,6 @@
[context.any.sharedworker.html]
[context]
expected:
if product == "edge_webdriver": FAIL
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
[context.any.serviceworker.html]

View file

@ -1,27 +1,6 @@
[order-of-metas.any.worker.html]
expected:
if product == "edge_webdriver": TIMEOUT
[order-of-metas.any.html]
[<meta name=timeout> exists]
expected:
if product == "edge_webdriver": FAIL
[order-of-metas.any.sharedworker.html]
[foo\n]
expected:
if product == "edge_webdriver": FAIL
[foo]
expected:
if product == "edge_webdriver": FAIL
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
[order-of-metas.window.html]
[<meta name=timeout> exists]
expected:
if product == "edge_webdriver": FAIL

View file

@ -1,4 +0,0 @@
[order-of-metas.window.html]
[<meta name=timeout> exists]
expected:
if product == "edge_webdriver": FAIL

View file

@ -1,7 +1,6 @@
[secure-context.https.any.sharedworker.html]
[secure-context]
expected:
if product == "edge_webdriver": FAIL
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
[secure-context.https.any.serviceworker.html]

View file

@ -1,20 +1,6 @@
[title.any.html]
[foobar\n]
expected:
if product == "edge_webdriver": FAIL
[title.any.sharedworker.html]
[foobar\n]
expected:
if product == "edge_webdriver": FAIL
[foobar]
expected:
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
[title.any.worker.html]
expected:
if product == "edge_webdriver": TIMEOUT

View file

@ -1,7 +1,4 @@
[file_upload.sub.html]
expected:
if product == "edge_webdriver": ERROR
[File upload using testdriver]
expected:
if product == "epiphany" or product == "webkit": FAIL

View file

@ -3,11 +3,11 @@
// (https://github.com/tidoust/reffy-reports)
// Source: Media Capture and Streams (https://w3c.github.io/mediacapture-main/)
[Exposed=Window,
Constructor,
Constructor(MediaStream stream),
Constructor(sequence<MediaStreamTrack> tracks)]
[Exposed=Window]
interface MediaStream : EventTarget {
constructor();
constructor(MediaStream stream);
constructor(sequence<MediaStreamTrack> tracks);
readonly attribute DOMString id;
sequence<MediaStreamTrack> getAudioTracks();
sequence<MediaStreamTrack> getVideoTracks();
@ -37,7 +37,7 @@ interface MediaStreamTrack : EventTarget {
MediaTrackCapabilities getCapabilities();
MediaTrackConstraints getConstraints();
MediaTrackSettings getSettings();
Promise<void> applyConstraints(optional MediaTrackConstraints constraints);
Promise<void> applyConstraints(optional MediaTrackConstraints constraints = {});
};
enum MediaStreamTrackState {
@ -133,8 +133,9 @@ enum VideoResizeModeEnum {
"crop-and-scale"
};
[Exposed=Window, Constructor(DOMString type, MediaStreamTrackEventInit eventInitDict)]
[Exposed=Window]
interface MediaStreamTrackEvent : Event {
constructor(DOMString type, MediaStreamTrackEventInit eventInitDict);
[SameObject] readonly attribute MediaStreamTrack track;
};
@ -180,7 +181,7 @@ partial interface Navigator {
partial interface MediaDevices {
MediaTrackSupportedConstraints getSupportedConstraints();
Promise<MediaStream> getUserMedia(optional MediaStreamConstraints constraints);
Promise<MediaStream> getUserMedia(optional MediaStreamConstraints constraints = {});
};
dictionary MediaStreamConstraints {

View file

@ -0,0 +1,27 @@
<!DOCTYPE HTML>
<meta charset=utf-8>
<title>Largest Contentful Paint: observe image inside SVG</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/largest-contentful-paint-helpers.js"></script>
<script>
async_test(function (t) {
if (!window.PerformanceElementTiming) {
assert_unreached("PerformanceElementTiming is not implemented");
}
const beforeLoad = performance.now();
new PerformanceObserver(
t.step_func_done(entryList => {
assert_equals(entryList.getEntries().length, 1);
const entry = entryList.getEntries()[0];
const url = window.location.origin + '/images/blue.png';
// blue.png is 133 by 106.
const size = 133 * 106;
checkImage(entry, url, 'image_id', size, beforeLoad);
})
).observe({type: 'largest-contentful-paint', buffered: true});
}, "Image inside SVG is observable.");
</script>
<svg width="300" height="300" id='svg_id'>
<image href='/images/blue.png' id='image_id'/>
</svg>

View file

@ -0,0 +1,53 @@
<!DOCTYPE HTML>
<meta charset=utf-8>
<title>Largest Contentful Paint: size when image overflows</title>
<!-- In this test, an image with an intrinsic size of 100 x 50 is added, but
scaled up in order to overflow the viewport. -->
<body>
<style>
body {
/* Preventing a scrollbar from showing and removing any margins simplifies
the calculations below. */
overflow: hidden;
margin: 0px;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/largest-contentful-paint-helpers.js"></script>
<script>
let beforeRender;
const viewportWidth = document.documentElement.clientWidth;
const viewportHeight = document.documentElement.clientHeight;
async_test(function (t) {
if (!window.PerformanceElementTiming) {
assert_unreached("PerformanceElementTiming is not implemented");
}
const beforeLoad = performance.now();
new PerformanceObserver(
t.step_func_done(function(entryList) {
assert_equals(entryList.getEntries().length, 1);
const entry = entryList.getEntries()[0];
const url = window.location.origin + '/images/green-100x50.png';
// To compute the size, compute the percentage of the image visible and
// scale by its natural dimensions. In this test, the image is twice
// the viewport width and twice the viewport height, so it is
// effectively clipped to 50% by 50% of its display size. Scaling by
// its natural width and height of 100px and 50px respectively, leads
// to a weighted size of 50 by 25.
const truncatedWidth = 100 / 2;
const truncatedHeight = 50 / 2;
const weightedSize = truncatedWidth * truncatedHeight;
checkImage(entry, url, 'image_id', weightedSize, beforeLoad);
})
).observe({type: 'largest-contentful-paint', buffered: true});
// Add an image, setting width and height equal to viewport.
img = document.createElement('img');
img.src = '/images/green-100x50.png';
img.id = 'image_id';
img.width = viewportWidth * 2;
img.height = viewportHeight * 2;
document.body.appendChild(img);
}, 'The intersectionRect of an img element overflowing is computed correctly');
</script>
</body>

View file

@ -0,0 +1,23 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>fractions bar</title>
<style type="text/css">
#green {
position: absolute;
background: green;
width: 150px;
height: 150px;
left: 50px;
top: 50px;
}
</style>
</head>
<body>
<p>This test passes if you see a green <strong>square</strong> and no red.</p>
<div>
<div id="green"></div>
</div>
</body>
</html>

View file

@ -0,0 +1,82 @@
<!DOCTYPE html>
<html class="reftest-wait">
<head>
<meta charset="utf-8">
<title>fractions bar</title>
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#fractions-mfrac">
<meta name="assert" content="Verify painting of the fraction bar when margin/padding/border are involved.">
<link rel="match" href="frac-bar-002-ref.html">
<style type="text/css">
@font-face {
font-family: TestFont;
src: url("/fonts/math/fraction-rulethickness10000.woff");
}
math {
/* FractionRuleThickness = 10000 * 1 / 1000 = 10px; */
/* The gap / shift / axisheight parameters are set to 0. */
font-family: "TestFont";
font-size: 1px;
}
#container {
position: absolute;
left: 0;
top: 0;
}
#red {
position: absolute;
background: red;
margin: 1px;
width: 148px;
height: 148px;
}
</style>
<script src="/common/reftest-wait.js"></script>
<script>
window.addEventListener("load", () => { document.fonts.ready.then(adjustPositionOfFraction); });
function adjustPositionOfFraction()
{
requestAnimationFrame(() => {
var container = document.getElementById("container");
var red = document.getElementById("red");
var numeratorBox = document.getElementById("numerator").getBoundingClientRect();
const shift = 50;
const numeratorMargin = 20;
/* Move the red square at the expected position,
with a 1px gap to avoid antialiasing issues. */
red.style.left = `${shift}px`;
red.style.top = `${shift}px`;
/* Move the fraction bar at the expected position. */
container.style.left = (shift - numeratorBox.left + numeratorMargin) + "px";
container.style.top = (shift - numeratorBox.bottom - numeratorMargin) + "px";
requestAnimationFrame(takeScreenshot);
});
}
</script>
</head>
<body>
<p>This test passes if you see a green <strong>square</strong> and no red.</p>
<div>
<div id="red"></div>
<div id="container">
<math>
<!-- border, padding and margin should not affect the width of the fraction bar. -->
<mfrac style="color: green; font-size: 15em;
border: 30px solid transparent;
padding: 60px; margin: 120px;
">
<!-- the bar width is the one of the numerator margin box i.e. 80 + 2 * (5 + 10 + 20) = 150px -->
<mspace id="numerator" width="80px"
style="border: 5px solid transparent;
padding: 10px; margin: 20px;"></mspace>
<mspace></mspace>
</mfrac>
</math>
</div>
</div>
<script src="/mathml/support/feature-detection.js"></script>
<script>MathMLFeatureDetection.ensure_for_match_reftest("has_mfrac");</script>
</body>
</html>

View file

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>fraction default padding</title>
</head>
<body>
<p>This test passes if you see three green squares of same size, separated by a gap of one pixel.</p>
<div>
<math>
<mspace width="150px" height="75px" depth="75px" style="background: green"/>
<mspace width="1px"/>
<mspace width="150px" height="75px" depth="75px" style="background: green"/>
<mspace width="1px"/>
<mspace width="150px" height="75px" depth="75px" style="background: green"/>
</math>
</div>
</body>
</html>

View file

@ -0,0 +1,37 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>fraction default padding</title>
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#fractions-mfrac">
<meta name="assert" content="Verifies 1px padding is added around each side of the fraction.">
<link rel="match" href="frac-default-padding-ref.html">
<style type="text/css">
@font-face {
font-family: TestFont;
src: url("/fonts/math/fraction-rulethickness10000.woff");
}
math {
/* FractionRuleThickness = 10000 * 1 / 1000 = 10px; */
/* The gap / shift / axisheight parameters are set to 0. */
font-family: "TestFont";
font-size: 1px;
}
</style>
</head>
<body>
<p>This test passes if you see three green squares of same size, separated by a gap of one pixel.</p>
<div>
<math>
<mspace width="150px" height="75px" depth="75px" style="background: green"/>
<mfrac style="color: green; font-size: 15em">
<mspace id="numerator" width="150px"></mspace>
<mspace></mspace>
</mfrac>
<mspace width="150px" height="75px" depth="75px" style="background: green"/>
</math>
</div>
<script src="/mathml/support/feature-detection.js"></script>
<script>MathMLFeatureDetection.ensure_for_match_reftest("has_mfrac");</script>
</body>
</html>

View file

@ -20,7 +20,7 @@
}
</style>
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<link rel="match" href="mo-movablelimits-ref.html">
<link rel="match" href="mo-movablelimits-from-in-flow-ref.html">
</head>
<body>
<math>

View file

@ -118,7 +118,7 @@
test(function() {
assert_true(MathMLFeatureDetection.has_mspace());
assert_cramped("munderover-001", false, "base");
assert_cramped("munderover-002", false, "underscript");
assert_cramped("munderover-002", true, "underscript");
assert_cramped("munderover-003", false, "non-accent overscript");
}, "child of munderover");
@ -195,7 +195,7 @@
test(function() {
assert_true(MathMLFeatureDetection.has_mspace());
assert_cramped("munderover-011", false, "base");
assert_cramped("munderover-012", false, "underscript");
assert_cramped("munderover-012", true, "underscript");
assert_cramped("munderover-013", false, "non-accent overscript");
}, "child of munderover, from in-flow children");

View file

@ -0,0 +1,286 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Basic table layout</title>
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#table-or-matrix-mtable">
<meta name="assert" content="Verify position of cells in basic 2x2, 4x3 and 3x4 math tables.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/mathml/support/feature-detection.js"></script>
<script>
setup({ explicit_done: true });
window.addEventListener("load", runTests);
function runTests() {
Array.from(document.getElementsByTagName("mtable")).forEach(table => {
const id = table.getAttribute("id");
const rtl = window.getComputedStyle(table).direction === "rtl";
test(function() {
assert_true(MathMLFeatureDetection.has_mspace());
const rows = Array.from(table.getElementsByTagName("mtr"));
for (var j = 0; j < rows.length; j++) {
var cells = Array.from(rows[j].getElementsByTagName("mtd"));
for (var i = 0; i < cells.length - 1; i++) {
var space1 = cells[i].firstElementChild.getBoundingClientRect();
var space2 = cells[i + 1].firstElementChild.getBoundingClientRect();
assert_equals(space1.top, space2.top,
`Cells (${i},${j}) and (${i + 1},${j}) should have same vertical position`);
if (rtl) {
assert_greater_than(space1.left, space2.right,
`Cell (${i},${j}) should be on the right of (${i + 1},${j})`);
} else {
assert_less_than(space1.right, space2.left,
`Cell (${i},${j}) should be on the left of (${i + 1},${j})`);
}
}
}
for (var j = 0; j < rows.length - 1; j++) {
var cells1 = Array.from(rows[j].getElementsByTagName("mtd"));
var cells2 = Array.from(rows[j + 1].getElementsByTagName("mtd"));
for (var i = 0; i < cells1.length; i++) {
var space1 = cells1[i].firstElementChild.getBoundingClientRect();
var space2 = cells2[i].firstElementChild.getBoundingClientRect();
assert_equals(space1.left, space2.left,
`Cells (${i},${j}) and (${i},${j + 1}) should have same horizontal position`);
assert_less_than(space1.bottom, space2.top,
`Cell (${i},${j}) should be above (${i},${j + 1})`);
}
}
}, `Layout of ${id}`);
});
done();
}
</script>
</head>
<body>
<div id="log"></div>
<p>
<math>
<mtable id="table-001">
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: lightblue;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: lightgreen;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: blue;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: green;"></mspace>
</mtd>
</mtr>
</mtable>
<mtable id="table-002">
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: lightblue;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: lightgreen;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: cyan;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: purple;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: blue;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: green;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: yellow;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: orange;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: black;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: red;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: gray;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: maroon;"></mspace>
</mtd>
</mtr>
</mtable>
<mtable id="table-003">
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: lightblue;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: lightgreen;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: cyan;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: blue;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: green;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: orange;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: black;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: maroon;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: gray;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: red;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: purple;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: yellow;"></mspace>
</mtd>
</mtr>
</mtable>
</math>
</p>
<p>
<math dir="rtl">
<mtable id="table-011">
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: lightblue;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: lightgreen;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: blue;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: green;"></mspace>
</mtd>
</mtr>
</mtable>
<mtable id="table-012">
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: lightblue;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: lightgreen;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: cyan;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: purple;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: blue;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: green;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: yellow;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: orange;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: black;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: red;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: gray;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: maroon;"></mspace>
</mtd>
</mtr>
</mtable>
<mtable id="table-013">
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: lightblue;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: lightgreen;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: cyan;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: blue;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: green;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: orange;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: black;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: maroon;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: gray;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: red;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: purple;"></mspace>
</mtd>
<mtd>
<mspace width="20px" height="10px" style="background: yellow;"></mspace>
</mtd>
</mtr>
</mtable>
</math>
</p>
</body>
</html>

View file

@ -0,0 +1,146 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Basic table alignment</title>
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#table-or-matrix-mtable">
<meta name="assert" content="Verify alignment of cells in basic 2x2, 4x3 and 3x4 math tables.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/mathml/support/feature-detection.js"></script>
<script>
setup({ explicit_done: true });
window.addEventListener("load", runTests);
function runTests() {
var epsilon = 1;
test(function() {
assert_true(MathMLFeatureDetection.has_mspace());
const ascents = [40, 0, 20, 30, 10, 80, 0, 40, 70, 30];
const row = document.getElementById("vertical").firstElementChild;
const cells = Array.from(row.getElementsByTagName("mtd"));
for (var i = 0; i < cells.length - 1; i++) {
var space1 = cells[i].firstElementChild.getBoundingClientRect();
var space2 = cells[i + 1].firstElementChild.getBoundingClientRect();
assert_approx_equals(space1.top + ascents[i],
space2.top + ascents[i + 1],
epsilon,
`Baselines of cells ${i} and ${i + 1} should be aligned.`);
}
}, `Vertical alignment of cells`);
test(function() {
assert_true(MathMLFeatureDetection.has_mspace());
const table = document.getElementById("horizontal");
const rows = Array.from(table.getElementsByTagName("mtr"));
for (var j = 0; j < rows.length - 1; j++) {
var space1 = rows[j].firstElementChild.firstElementChild.getBoundingClientRect();
var space2 = rows[j + 1].firstElementChild.firstElementChild.getBoundingClientRect();
assert_approx_equals((space1.left + space1.right) / 2,
(space2.left + space2.right) / 2,
epsilon,
`Baselines of cells ${j} and ${j + 1} should be aligned.`);
}
}, `Horizontal alignment of cells`);
done();
}
</script>
</head>
<body>
<div id="log"></div>
<p>
<math>
<mtable id="vertical">
<mtr>
<mtd>
<mspace width="10px" height="40px" depth="0px" style="background: lightblue;"></mspace>
</mtd>
<mtd>
<mspace width="10px" height="0px" depth="40px" style="background: lightgreen;"></mspace>
</mtd>
<mtd>
<mspace width="10px" height="20px" depth="20px" style="background: cyan;"></mspace>
</mtd>
<mtd>
<mspace width="10px" height="30px" depth="10px" style="background: purple;"></mspace>
</mtd>
<mtd>
<mspace width="10px" height="10px" depth="30px" style="background: orange;"></mspace>
</mtd>
<mtd>
<mspace width="10px" height="80px" depth="0px" style="background: blue;"></mspace>
</mtd>
<mtd>
<mspace width="10px" height="0px" depth="80px" style="background: green;"></mspace>
</mtd>
<mtd>
<mspace width="10px" height="40px" depth="40px" style="background: yellow;"></mspace>
</mtd>
<mtd>
<mspace width="10px" height="70px" depth="30px" style="background: red;"></mspace>
</mtd>
<mtd>
<mspace width="10px" height="30px" depth="70px" style="background: black;"></mspace>
</mtd>
</mtr>
</mtable>
</math>
</p>
<p>
<math>
<mtable id="horizontal">
<mtr>
<mtd>
<mspace width="10px" height="10px" style="background: lightblue;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="40px" height="10px" style="background: lightgreen;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="30px" height="10px" style="background: cyan;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="20px" height="10px" style="background: purple;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="50px" height="10px" style="background: orange;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="100px" height="10px" style="background: blue;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="90px" height="10px" style="background: green;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="70px" height="10px" style="background: yellow;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="80px" height="10px" style="background: red;"></mspace>
</mtd>
</mtr>
<mtr>
<mtd>
<mspace width="40px" height="10px" style="background: black;"></mspace>
</mtd>
</mtr>
</mtable>
</math>
</p>
</body>
</html>

View file

@ -0,0 +1,85 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ignored CSS properties</title>
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#css-styling">
<meta name="assert" content="Verify style with ignored properties does not affect MathML layout.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/mathml/support/feature-detection.js"></script>
<script src="/mathml/support/layout-comparison.js"></script>
<script src="/mathml/support/mathml-fragments.js"></script>
<script>
var epsilon = 1;
setup({ explicit_done: true });
window.addEventListener("load", runTests);
function runTests() {
for (tag in MathMLFragments) {
if (!FragmentHelper.isValidChildOfMrow(tag))
continue;
var ignoredProperties = [
"writing-mode: vertical-rl;",
"white-space: normal;",
"float: right;",
"align-content: end; justify-content: end;",
"align-self: end; justify-self: end;",
];
if (tag !== "mtable") {
ignoredProperties.push("width: 100px !important; height: 200px !important;");
}
ignoredProperties.forEach(ignoredStyle => {
document.body.insertAdjacentHTML("beforeend", `<div style="position: absolute;">\
<div style="display: inline-block"><math>${MathMLFragments[tag]}</math></div>\
<div style="display: inline-block"><math>${MathMLFragments[tag]}</math></div>\
</div>`);
var div = document.body.lastElementChild;
// Create MathML structure with ignored style properties.
var elementContainer = div.firstElementChild;
var elementContainerWidth = elementContainer.getBoundingClientRect().width;
var element = FragmentHelper.element(elementContainer);
if (!FragmentHelper.isEmpty(tag))
FragmentHelper.forceNonEmptyDescendants(element);
element.setAttribute("style", ignoredStyle);
Array.from(element.getElementsByTagNameNS("*", FragmentHelper.mathml_namespace)).forEach(descendant => {
descendant.setAttribute("style", ignoredStyle);
});
var referenceContainer = div.lastElementChild;
var referenceContainerWidth = referenceContainer.getBoundingClientRect().width;
var reference = FragmentHelper.element(referenceContainer);
if (!FragmentHelper.isEmpty(tag))
FragmentHelper.forceNonEmptyDescendants(reference);
var epsilon = 1;
test(function() {
// FIXME(fwang): Feature detection should be done per-tag.
assert_true(MathMLFeatureDetection.has_mspace());
assert_approx_equals(elementContainerWidth, referenceContainerWidth, epsilon);
}, `${tag} preferred width calculation is not affected by ${ignoredStyle}`);
test(function() {
// FIXME(fwang): Feature detection should be done per-tag.
assert_true(MathMLFeatureDetection.has_mspace());
compareLayout(element, reference, epsilon);
}, `${tag} layout is not affected by ${ignoredStyle}`);
div.style = "display: none;"; // Hide the div after measurement.
});
}
done();
}
</script>
</head>
<body>
<div id="log"></div>
</body>
</html>

View file

@ -22,7 +22,6 @@
if (!FragmentHelper.isValidChildOfMrow(tag) ||
FragmentHelper.isEmpty(tag))
continue;
// TODO: Add floats too?
["display: none",
"display: contents",
"position: absolute",

View file

@ -21,7 +21,8 @@
if (!FragmentHelper.isValidChildOfMrow(tag))
continue;
var style = "padding-left: 30px; padding-right: 40px; padding-top: 50px; padding-bottom: 60px;";
var defaultInlinePadding = (tag === "mfrac" ? 1 : 0);
var style = `padding-left: ${defaultInlinePadding + 30}px; padding-right: ${defaultInlinePadding + 40}px; padding-top: 50px; padding-bottom: 60px;`;
if (FragmentHelper.isEmpty(tag)) {
test(function() {

View file

@ -117,8 +117,10 @@ var MathMLFragments = {
};
var FragmentHelper = {
mathml_namespace: "http://www.w3.org/1998/Math/MathML",
createElement: function(tag) {
return document.createElementNS("http://www.w3.org/1998/Math/MathML", tag);
return document.createElementNS(this.mathml_namespace, tag);
},
isValidChildOfMrow: function(tag) {
@ -158,5 +160,22 @@ var FragmentHelper = {
if (element.firstElementChild)
return element.firstElementChild;
return this.appendChild(fragment);
},
forceNonEmptyDescendants: function(fragment) {
var element = this.element(fragment) || fragment;
if (element.classList.contains("mathml-container") ||
element.classList.contains("foreign-container")) {
for (var i = 0; i < 10; i++)
this.appendChild(element);
return;
}
var child = element.firstElementChild;
if (child) {
for (; child; child = child.nextElementSibling) {
this.forceNonEmptyDescendants(child);
}
return;
}
},
}

View file

@ -0,0 +1,44 @@
self.addEventListener('canmakepayment', (event) => {
event.respondWith(true);
});
function responder(event) {
const methodName = event.methodData[0].supportedMethods;
const shippingOption = event.paymentOptions.requestShipping
? event.shippingOptions[0].id
: '';
const payerName =
event.paymentOptions.requestPayerName ? 'John Smith' : '';
const payerEmail =
event.paymentOptions.requestPayerEmail ? 'smith@gmail.com' : '';
const payerPhone =
event.paymentOptions.requestPayerPhone ? '+15555555555' : '';
const shippingAddress = event.paymentOptions.requestShipping ? {
addressLine: [
'1875 Explorer St #1000',
],
city: 'Reston',
country: 'US',
dependentLocality: '',
organization: 'Google',
phone: '+15555555555',
postalCode: '20190',
recipient: 'John Smith',
region: 'VA',
sortingCode: '',
} : {};
return {
methodName,
details: { token: '123456789'},
payerName,
payerEmail,
payerPhone,
shippingAddress,
shippingOption
};
}
self.addEventListener('paymentrequest', (event) => {
event.respondWith(responder(event));
});

View file

@ -0,0 +1,88 @@
<!DOCTYPE html>
<meta charset="utf-8" />
<title>Tests for Delegation of shipping and contact collection to PH</title>
<link rel="manifest" href="/payment-handler/basic-card.json" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="register-and-activate-service-worker.js"></script>
<p>If the payment sheet is shown, please authorize the mock payment.</p>
<script>
async function runTests(registration) {
const methodName = window.location.origin + '/payment-handler/payment-app/';
await registration.paymentManager.instruments.clear();
await registration.paymentManager.instruments.set('instrument-key', {
name: 'Instrument Name',
method: methodName,
});
await navigator.serviceWorker.ready;
await registration.paymentManager.enableDelegations(
['shippingAddress', 'payerName', 'payerPhone', 'payerEmail']);
promise_test(async (t) => {
const request = new PaymentRequest([{supportedMethods: methodName}], {
total: {label: 'Total', amount: {currency: 'USD', value: '0.01'}},
shippingOptions: [{
id: 'freeShippingOption',
label: 'Free global shipping',
amount: {
currency: 'USD',
value: '0',
},
selected: true,
}],
}, {requestShipping: true});
const response = await test_driver.bless('showing a payment sheet', () =>
request.show()
);
const complete_promise = response.complete('success');
// Validate response
assert_equals('freeShippingOption', response.shippingOption);
assert_equals('Reston', response.shippingAddress.city);
assert_equals('US', response.shippingAddress.country);
assert_equals('20190', response.shippingAddress.postalCode);
assert_equals('VA', response.shippingAddress.region);
return complete_promise;
}, 'Payment handler response should include shipping address and selected shipping option id.');
promise_test(async (t) => {
const request = new PaymentRequest([{
supportedMethods: methodName
}], {
total: {
label: 'Total',
amount: {
currency: 'USD',
value: '0.01'
}
}
}, {
requestPayerName: true,
requestPayerEmail: true,
requestPayerPhone: true
});
const response = await test_driver.bless('showing a payment sheet', () =>
request.show()
);
const complete_promise = response.complete('success');
// Validate response.
assert_equals('John Smith', response.payerName);
assert_equals('smith@gmail.com', response.payerEmail);
assert_equals('+15555555555', response.payerPhone);
return complete_promise;
}, 'Payment handler response should include payer\'s contact information.');
}
registerAndActiveServiceWorker(
'app-supports-shipping-contact-delegation.js',
'payment-app/',
runTests
);
</script>

View file

@ -282,8 +282,21 @@ class MockRuntime {
}
simulateVisibilityChange(visibilityState) {
// TODO(https://crbug.com/982099): Chrome currently does not have a way for
// devices to bubble up any form of visibilityChange.
let mojoState = null;
switch(visibilityState) {
case "visible":
mojoState = device.mojom.XRVisibilityState.VISIBLE;
break;
case "visible-blurred":
mojoState = device.mojom.XRVisibilityState.VISIBLE_BLURRED;
break;
case "hidden":
mojoState = device.mojom.XRVisibilityState.HIDDEN;
break;
}
if (mojoState) {
this.sessionClient_.onVisibilityStateChanged(mojoState);
}
}
setBoundsGeometry(bounds) {
@ -403,28 +416,37 @@ class MockRuntime {
// This function converts between the matrix provided by the WebXR test API
// and the internal data representation.
getEye(fakeXRViewInit) {
let fov = null;
if (fakeXRViewInit.fieldOfView) {
fov = {
upDegrees: fakeXRViewInit.fieldOfView.upDegrees,
downDegrees: fakeXRViewInit.fieldOfView.downDegrees,
leftDegrees: fakeXRViewInit.fieldOfView.leftDegrees,
rightDegrees: fakeXRViewInit.fieldOfView.rightDegrees
};
} else {
let m = fakeXRViewInit.projectionMatrix;
function toDegrees(tan) {
return Math.atan(tan) * 180 / Math.PI;
}
let xScale = m[0];
let yScale = m[5];
let near = m[14] / (m[10] - 1);
let far = m[14] / (m[10] - 1);
let leftTan = (1 - m[8]) / m[0];
let rightTan = (1 + m[8]) / m[0];
let upTan = (1 + m[9]) / m[5];
let downTan = (1 - m[9]) / m[5];
return {
fieldOfView: {
fov = {
upDegrees: toDegrees(upTan),
downDegrees: toDegrees(downTan),
leftDegrees: toDegrees(leftTan),
rightDegrees: toDegrees(rightTan)
},
};
}
return {
fieldOfView: fov,
headFromEye: composeGFXTransform(fakeXRViewInit.viewOffset),
renderWidth: fakeXRViewInit.resolution.width,
renderHeight: fakeXRViewInit.resolution.height

View file

@ -81,7 +81,7 @@ promise_test(() => {
assert_equals(harness.status, 'ERROR');
assert_equals(
harness.message,
'test named "null" inappropriately returned a value'
'Test named "null" inappropriately returned a value'
);
assert_equals(tests.before, 'PASS');
assert_equals(tests.null, 'PASS');
@ -100,7 +100,7 @@ promise_test(() => {
assert_equals(harness.status, 'ERROR');
assert_equals(
harness.message,
'test named "object" inappropriately returned a value'
'Test named "object" inappropriately returned a value'
);
assert_equals(tests.before, 'PASS');
assert_equals(tests.object, 'PASS');
@ -119,7 +119,7 @@ promise_test(() => {
assert_equals(harness.status, 'ERROR');
assert_equals(
harness.message,
'test named "thenable" inappropriately returned a value, consider using `promise_test` instead'
'Test named "thenable" inappropriately returned a value, consider using `promise_test` instead'
);
assert_equals(tests.before, 'PASS');
assert_equals(tests.thenable, 'PASS');
@ -143,7 +143,7 @@ promise_test(() => {
assert_equals(harness.status, 'ERROR');
assert_equals(
harness.message,
'test named "restricted" inappropriately returned a value'
'Test named "restricted" inappropriately returned a value'
);
assert_equals(tests.before, 'PASS');
assert_equals(tests.restricted, 'PASS');

View file

@ -544,7 +544,7 @@ policies and contribution forms [3].
var value = test_obj.step(func, test_obj, test_obj);
if (value !== undefined) {
var msg = "test named \"" + test_name +
var msg = "Test named \"" + test_name +
"\" inappropriately returned a value";
try {

View file

@ -28,6 +28,14 @@ const VALID_POSE_TRANSFORM = {
const VALID_PROJECTION_MATRIX =
[1, 0, 0, 0, 0, 1, 0, 0, 3, 2, -1, -1, 0, 0, -0.2, 0];
// This is a decomposed version of the above.
const VALID_FIELD_OF_VIEW = {
upDegrees: 71.565,
downDegrees: -45,
leftDegrees:-63.4349,
rightDegrees: 75.9637
};
// A valid input grip matrix for when we don't care about specific values
const VALID_GRIP = [1, 0, 0, 0,
0, 1, 0, 0,

View file

@ -20,7 +20,7 @@ let testFunction = function(session, fakeDeviceController, t) {
let eventPromise = eventWatcher.wait_for(
["visibilitychange", "visibilitychange", "framefired", "watcherdone"]);
function onFrame(t, frame) {
function onFrame(timestamp, frame) {
t.step( () => {
// The session should not fire any animation frames while the visibility
// state is hidden.
@ -39,7 +39,7 @@ let testFunction = function(session, fakeDeviceController, t) {
session.removeEventListener("visibilitychange", onSessionVisibilityChangeHidden, false);
session.addEventListener("visibilitychange", onSessionVisibilityChangeVisible, false);
session.requestAnimationFrame()
session.requestAnimationFrame(onFrame)
t.step_timeout(() => {
fakeDeviceController.simulateVisibilityChange("visible");
@ -73,6 +73,8 @@ let testFunction = function(session, fakeDeviceController, t) {
session.addEventListener("visibilitychange", onSessionVisibilityChangeHidden, false);
fakeDeviceController.simulateVisibilityChange("hidden");
return eventPromise;
};
xr_session_promise_test(

View file

@ -13,14 +13,20 @@ let testName = "XRView projection matrices update near and far depths on the "
const fakeViews = [{
eye:"left",
projectionMatrix: VALID_PROJECTION_MATRIX,
viewOffset: LEFT_OFFSET,
resolution: VALID_RESOLUTION
resolution: VALID_RESOLUTION,
fieldOfView: VALID_FIELD_OF_VIEW,
// The webxr-test-api requires that we still set this for now, but it is
// supposed to be ignored.
projectionMatrix: IDENTITY_MATRIX
}, {
eye:"right",
projectionMatrix: VALID_PROJECTION_MATRIX,
viewOffset: RIGHT_OFFSET,
resolution: VALID_RESOLUTION
resolution: VALID_RESOLUTION,
fieldOfView: VALID_FIELD_OF_VIEW,
// The webxr-test-api requires that we still set this for now, but it is
// supposed to be ignored.
projectionMatrix: IDENTITY_MATRIX
},
];