mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Update web-platform-tests to revision bf42dca1ce568ce559d5a4cad507239035b91dcb
This commit is contained in:
parent
91d2bd3d64
commit
20e57b5c74
81 changed files with 3616 additions and 289 deletions
|
@ -7,7 +7,7 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Opening a blob URL in a new window immediately before revoking it works.]
|
[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.]
|
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -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": [
|
||||||
[
|
[
|
||||||
"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": [
|
||||||
[
|
[
|
||||||
"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": [
|
||||||
[
|
[
|
||||||
"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": [
|
||||||
[
|
[
|
||||||
"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": [
|
||||||
[
|
[
|
||||||
"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-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-autofocus.html": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"html/semantics/forms/autofocus/resources/child-iframe.html": [
|
||||||
|
[]
|
||||||
|
],
|
||||||
"html/semantics/forms/autofocus/resources/erase-first.css": [
|
"html/semantics/forms/autofocus/resources/erase-first.css": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"html/semantics/forms/autofocus/resources/frame-with-autofocus-element.html": [
|
"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": [
|
"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/reftest_timeout.html.ini": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"infrastructure/metadata/infrastructure/reftest/size.html.ini": [
|
|
||||||
[]
|
|
||||||
],
|
|
||||||
"infrastructure/metadata/infrastructure/server/context.any.js.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.any.js.ini": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"infrastructure/metadata/infrastructure/server/order-of-metas.window.js.ini": [
|
|
||||||
[]
|
|
||||||
],
|
|
||||||
"infrastructure/metadata/infrastructure/server/secure-context.https.any.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-001-ref.html": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"mathml/presentation-markup/fractions/frac-bar-002-ref.html": [
|
||||||
|
[]
|
||||||
|
],
|
||||||
"mathml/presentation-markup/fractions/frac-color-001-notref.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-created-dynamically-ref.html": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"mathml/presentation-markup/fractions/frac-default-padding-ref.html": [
|
||||||
|
[]
|
||||||
|
],
|
||||||
"mathml/presentation-markup/fractions/frac-linethickness-001-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-change-payment-method.js": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"payment-handler/app-supports-shipping-contact-delegation.js": [
|
||||||
|
[]
|
||||||
|
],
|
||||||
"payment-handler/basic-card.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": [
|
||||||
[
|
[
|
||||||
"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": [
|
||||||
[
|
[
|
||||||
"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": [
|
||||||
[
|
[
|
||||||
"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": [
|
||||||
[
|
[
|
||||||
"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": [
|
||||||
[
|
[
|
||||||
"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": [
|
||||||
[
|
[
|
||||||
"mathml/relations/css-styling/lengths-2.html",
|
"mathml/relations/css-styling/lengths-2.html",
|
||||||
|
@ -513300,6 +513443,10 @@
|
||||||
"b3a7420c630ad4c84e5593ad48f48f3072a88b98",
|
"b3a7420c630ad4c84e5593ad48f48f3072a88b98",
|
||||||
"visual"
|
"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": [
|
"css/CSS2/normal-flow/containing-block-percent-margin-bottom.html": [
|
||||||
"9dfc1963ac8a3bbccdd317e2b21613d08db21452",
|
"9dfc1963ac8a3bbccdd317e2b21613d08db21452",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -547336,7 +547483,7 @@
|
||||||
"f7f6529349bf1ba0436e2d1165a81552de95ffaa",
|
"f7f6529349bf1ba0436e2d1165a81552de95ffaa",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/css-color-adjust/parsing/color-scheme-computed.tentative.html": [
|
"css/css-color-adjust/parsing/color-scheme-computed.html": [
|
||||||
"80b9803981f7123d22c637ee9056c04ba3108818",
|
"80b9803981f7123d22c637ee9056c04ba3108818",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
@ -554860,6 +555007,10 @@
|
||||||
"5633dba3bdb63188d5ce10112d22b69bb5eb21a3",
|
"5633dba3bdb63188d5ce10112d22b69bb5eb21a3",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
|
"css/css-flexbox/percentage-heights-007.html": [
|
||||||
|
"1318933952c99e9bb142f74110cbc388e6dda6c4",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
"css/css-flexbox/percentage-size-subitems-001.html": [
|
"css/css-flexbox/percentage-size-subitems-001.html": [
|
||||||
"70f3953052a3a770c6cd15ee169607a00fc452b0",
|
"70f3953052a3a770c6cd15ee169607a00fc452b0",
|
||||||
"reftest"
|
"reftest"
|
||||||
|
@ -556725,7 +556876,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/css-fonts/parsing/font-computed.html": [
|
"css/css-fonts/parsing/font-computed.html": [
|
||||||
"b3f104e62439d48d167559cfd2aeb5e509991f82",
|
"ab2694d211468b62b7d82d8ec353005d058b4f24",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/css-fonts/parsing/font-family-computed.html": [
|
"css/css-fonts/parsing/font-family-computed.html": [
|
||||||
|
@ -556753,7 +556904,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/css-fonts/parsing/font-invalid.html": [
|
"css/css-fonts/parsing/font-invalid.html": [
|
||||||
"d6db9338aa2adf5945fd88e29bdd9376e2efe1d1",
|
"950747580e8bc0fb46c919669977681fe308d805",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/css-fonts/parsing/font-kerning-computed.html": [
|
"css/css-fonts/parsing/font-kerning-computed.html": [
|
||||||
|
@ -556829,7 +556980,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/css-fonts/parsing/font-valid.html": [
|
"css/css-fonts/parsing/font-valid.html": [
|
||||||
"769e6b42eae37a864fec6577614917f7b1fd7667",
|
"896be89741bd14acd961398791f62db3ec876c8d",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/css-fonts/parsing/font-variant-caps-computed.html": [
|
"css/css-fonts/parsing/font-variant-caps-computed.html": [
|
||||||
|
@ -572597,7 +572748,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/css-position/position-absolute-replaced-minmax.html": [
|
"css/css-position/position-absolute-replaced-minmax.html": [
|
||||||
"644b147a227e100c500de2de9e4f8e8449a4a21e",
|
"ff6757aeea32a875f0f7a7a7d38cf7da5bc1066c",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/css-position/position-fixed-at-bottom-right-on-viewport.html": [
|
"css/css-position/position-fixed-at-bottom-right-on-viewport.html": [
|
||||||
|
@ -573249,7 +573400,7 @@
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
"css/css-pseudo/first-letter-property-whitelist.html": [
|
"css/css-pseudo/first-letter-property-whitelist.html": [
|
||||||
"e3b3f532fefe0ed88b01e19457a747bd3013ac21",
|
"9ad7b31c3621b3c5fc7a9e2ec0eb35895c9f9eae",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/css-pseudo/first-letter-width-ref.html": [
|
"css/css-pseudo/first-letter-width-ref.html": [
|
||||||
|
@ -576416,8 +576567,28 @@
|
||||||
"2a4402579cf06ffb2f5611dfd6207fabcb8bdafe",
|
"2a4402579cf06ffb2f5611dfd6207fabcb8bdafe",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/css-scroll-snap/snap-to-visible-areas.html": [
|
"css/css-scroll-snap/snap-to-visible-areas-both.html": [
|
||||||
"3e822db02e675a3a8799f69f86d2bc93507c7547",
|
"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"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/css-scroll-snap/support/scroll-target-align-001-iframe.html": [
|
"css/css-scroll-snap/support/scroll-target-align-001-iframe.html": [
|
||||||
|
@ -583180,6 +583351,10 @@
|
||||||
"e755eff38133b6db65e9902a94047b120cf81dd1",
|
"e755eff38133b6db65e9902a94047b120cf81dd1",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
|
"css/css-text/line-breaking/line-breaking-020.html": [
|
||||||
|
"7c8d0f119edb5ef768b37a5a41b8df9bb9e59600",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"css/css-text/line-breaking/line-breaking-atomic-001.html": [
|
"css/css-text/line-breaking/line-breaking-atomic-001.html": [
|
||||||
"e071378c95fd436484a3056ecb2ba6ff35ddbaae",
|
"e071378c95fd436484a3056ecb2ba6ff35ddbaae",
|
||||||
"reftest"
|
"reftest"
|
||||||
|
@ -606509,7 +606684,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/cssom/font-shorthand-serialization.html": [
|
"css/cssom/font-shorthand-serialization.html": [
|
||||||
"6f6834a7509d0f58d37f40d6a6e45226f2e54092",
|
"29082f83eaf75a0831e5175b8b1217c4ecf4ebcd",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/cssom/getComputedStyle-detached-subtree.html": [
|
"css/cssom/getComputedStyle-detached-subtree.html": [
|
||||||
|
@ -608349,7 +608524,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/motion/animation/offset-interpolation.html": [
|
"css/motion/animation/offset-interpolation.html": [
|
||||||
"0d1ba1c8875ca1d76e52a01a655037cad6f8eff9",
|
"04f4d4b3bd78f95939c34aa098b85a7947d4fcbd",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/motion/animation/offset-path-interpolation-001.html": [
|
"css/motion/animation/offset-path-interpolation-001.html": [
|
||||||
|
@ -622141,7 +622316,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"dom/nodes/aria-element-reflection.tentative.html": [
|
"dom/nodes/aria-element-reflection.tentative.html": [
|
||||||
"974727f92aa315d727295fcf7b650bc24c507aab",
|
"848828810f160d5ac01f11bf41b27230b9738800",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"dom/nodes/attributes.html": [
|
"dom/nodes/attributes.html": [
|
||||||
|
@ -633309,7 +633484,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"html/dom/elements/global-attributes/dataset-set.html": [
|
"html/dom/elements/global-attributes/dataset-set.html": [
|
||||||
"722b17977e412a3c504fe708841ff273cf76e9e0",
|
"dbce5de309a1d0b4c70305b13540851a67c0ce91",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"html/dom/elements/global-attributes/dataset.html": [
|
"html/dom/elements/global-attributes/dataset.html": [
|
||||||
|
@ -643576,6 +643751,10 @@
|
||||||
"afd5601a523ff0a1d60d37b171b2098a38600ace",
|
"afd5601a523ff0a1d60d37b171b2098a38600ace",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"html/semantics/forms/autofocus/resources/child-iframe.html": [
|
||||||
|
"2645a180e4866ed9d1f0a107fc912d53b7437247",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"html/semantics/forms/autofocus/resources/erase-first.css": [
|
"html/semantics/forms/autofocus/resources/erase-first.css": [
|
||||||
"bbbcf799393fc047dae6d47836c3696868df8fb7",
|
"bbbcf799393fc047dae6d47836c3696868df8fb7",
|
||||||
"support"
|
"support"
|
||||||
|
@ -643584,6 +643763,10 @@
|
||||||
"985cba41494919525031081d236e4409aace453c",
|
"985cba41494919525031081d236e4409aace453c",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"html/semantics/forms/autofocus/resources/grand-child-autofocus.html": [
|
||||||
|
"88be6e0b04a99b8477925107e1f534024f021b5e",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"html/semantics/forms/autofocus/resources/moving-autofocus-to-parent.html": [
|
"html/semantics/forms/autofocus/resources/moving-autofocus-to-parent.html": [
|
||||||
"fc6c298a46e376cf45089f168cf841cab59ffd5c",
|
"fc6c298a46e376cf45089f168cf841cab59ffd5c",
|
||||||
"support"
|
"support"
|
||||||
|
@ -643592,6 +643775,10 @@
|
||||||
"0eeb5a9f0adf1d09959227241cd71fe32ebb485c",
|
"0eeb5a9f0adf1d09959227241cd71fe32ebb485c",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"html/semantics/forms/autofocus/same-origin-autofocus.html": [
|
||||||
|
"9cfcdb925cf16cc883ac37f126dc40673066a8b0",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"html/semantics/forms/autofocus/skip-another-top-level-browsing-context.html": [
|
"html/semantics/forms/autofocus/skip-another-top-level-browsing-context.html": [
|
||||||
"d392b903f075276a03189207e57d789608523de1",
|
"d392b903f075276a03189207e57d789608523de1",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -643605,7 +643792,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"html/semantics/forms/autofocus/skip-not-fully-active.html": [
|
"html/semantics/forms/autofocus/skip-not-fully-active.html": [
|
||||||
"32008b3019e905488c35ea432de396a2641cb61a",
|
"104dd5a4a5e371bf5002c7435e718d8e032fff5a",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"html/semantics/forms/autofocus/spin-by-blocking-style-sheet.html": [
|
"html/semantics/forms/autofocus/spin-by-blocking-style-sheet.html": [
|
||||||
|
@ -648488,6 +648675,10 @@
|
||||||
"c522afdd56c7ca0ef16094b9bd98c6bda5becefe",
|
"c522afdd56c7ca0ef16094b9bd98c6bda5becefe",
|
||||||
"testharness"
|
"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": [
|
"html/webappapis/dynamic-markup-insertion/closing-the-input-stream/document.close-01.xhtml": [
|
||||||
"cccc26bf17e3afe04cdad59cf2cf325ead1fb581",
|
"cccc26bf17e3afe04cdad59cf2cf325ead1fb581",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -650421,7 +650612,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"infrastructure/metadata/infrastructure/assumptions/allowed-to-play.html.ini": [
|
"infrastructure/metadata/infrastructure/assumptions/allowed-to-play.html.ini": [
|
||||||
"f9be6a64bdfd7ca033fda2a9cd1bdb105836df20",
|
"c9fbabede6d695cd3795e4390b35da0454ffcc34",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"infrastructure/metadata/infrastructure/assumptions/document-fonts-ready.html.ini": [
|
"infrastructure/metadata/infrastructure/assumptions/document-fonts-ready.html.ini": [
|
||||||
|
@ -650429,7 +650620,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"infrastructure/metadata/infrastructure/assumptions/html-elements.html.ini": [
|
"infrastructure/metadata/infrastructure/assumptions/html-elements.html.ini": [
|
||||||
"4be883a5cf7ab6869e2e9235acca37549a9045b8",
|
"67caa470342db6d2b46dab28464f2491f84dd7b2",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"infrastructure/metadata/infrastructure/browsers/firefox/__dir__.ini": [
|
"infrastructure/metadata/infrastructure/browsers/firefox/__dir__.ini": [
|
||||||
|
@ -650492,28 +650683,20 @@
|
||||||
"0d1b9bade95d7b101c8dbf51547ffbaec2260c27",
|
"0d1b9bade95d7b101c8dbf51547ffbaec2260c27",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"infrastructure/metadata/infrastructure/reftest/size.html.ini": [
|
|
||||||
"1c6cd9eff891b315fcbe4bfcded859259d50e509",
|
|
||||||
"support"
|
|
||||||
],
|
|
||||||
"infrastructure/metadata/infrastructure/server/context.any.js.ini": [
|
"infrastructure/metadata/infrastructure/server/context.any.js.ini": [
|
||||||
"9667d4d251e8b1915ae2c979766343babd3a0235",
|
"c3431d687b60aa1a07d9a4307ccfd4a2253ee162",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"infrastructure/metadata/infrastructure/server/order-of-metas.any.js.ini": [
|
"infrastructure/metadata/infrastructure/server/order-of-metas.any.js.ini": [
|
||||||
"a62ae82b9bec778832cea5e3a95ea069b11b49fc",
|
"8db9536e38cc880865c374f3743d7df9f727a530",
|
||||||
"support"
|
|
||||||
],
|
|
||||||
"infrastructure/metadata/infrastructure/server/order-of-metas.window.js.ini": [
|
|
||||||
"20e4cbad939b92111c17bdf0d5fdb58d379cf8df",
|
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"infrastructure/metadata/infrastructure/server/secure-context.https.any.js.ini": [
|
"infrastructure/metadata/infrastructure/server/secure-context.https.any.js.ini": [
|
||||||
"0a602b9ae264d92c75a06e79085c20faf4a65e5d",
|
"5f5ed991cf1b04da84e89d7eae2e0d80b9fd2841",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"infrastructure/metadata/infrastructure/server/title.any.js.ini": [
|
"infrastructure/metadata/infrastructure/server/title.any.js.ini": [
|
||||||
"6f7fed9dc062dbde3d73ea233f18f0f56d8e056c",
|
"e2a7b5578c3b0dec13206ec60da2a5c018c23eb1",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"infrastructure/metadata/infrastructure/server/wpt-server-http.sub.html.ini": [
|
"infrastructure/metadata/infrastructure/server/wpt-server-http.sub.html.ini": [
|
||||||
|
@ -650549,7 +650732,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"infrastructure/metadata/infrastructure/testdriver/file_upload.sub.html.ini": [
|
"infrastructure/metadata/infrastructure/testdriver/file_upload.sub.html.ini": [
|
||||||
"a39640b714b838a391f227ac58278ba991fbce66",
|
"e2bfbf8fb8fb71003bd06a8356fec3a074395040",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini": [
|
"infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini": [
|
||||||
|
@ -651153,7 +651336,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"interfaces/mediacapture-streams.idl": [
|
"interfaces/mediacapture-streams.idl": [
|
||||||
"d83777c5d293d04931e1d3ff9611a183e74bd142",
|
"e82bf36f3d79028dd21ff225c5ee46c9e1578b0a",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"interfaces/mediasession.idl": [
|
"interfaces/mediasession.idl": [
|
||||||
|
@ -651928,6 +652111,14 @@
|
||||||
"41c8c748619aea00c2afe67dd5983ab7601121b0",
|
"41c8c748619aea00c2afe67dd5983ab7601121b0",
|
||||||
"testharness"
|
"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": [
|
"largest-contentful-paint/image-src-change.html": [
|
||||||
"5ec860fa06f3281fd421912298e7b2c93dae19bb",
|
"5ec860fa06f3281fd421912298e7b2c93dae19bb",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -652364,6 +652555,14 @@
|
||||||
"9fc441230588216f5f5b20eab36b465c48cbb41b",
|
"9fc441230588216f5f5b20eab36b465c48cbb41b",
|
||||||
"reftest"
|
"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": [
|
"mathml/presentation-markup/fractions/frac-color-001-notref.html": [
|
||||||
"498d6277a3258c70882e7b2ec92e82e974bf9ab0",
|
"498d6277a3258c70882e7b2ec92e82e974bf9ab0",
|
||||||
"support"
|
"support"
|
||||||
|
@ -652404,6 +652603,14 @@
|
||||||
"b74338a8804ed4e71c99675035fa070159185905",
|
"b74338a8804ed4e71c99675035fa070159185905",
|
||||||
"reftest"
|
"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": [
|
"mathml/presentation-markup/fractions/frac-linethickness-001-ref.html": [
|
||||||
"d4be8ea03bfc29506af0e26a3d94d5eeafaaf472",
|
"d4be8ea03bfc29506af0e26a3d94d5eeafaaf472",
|
||||||
"support"
|
"support"
|
||||||
|
@ -652593,7 +652800,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"mathml/presentation-markup/operators/mo-movablelimits-from-in-flow.html": [
|
"mathml/presentation-markup/operators/mo-movablelimits-from-in-flow.html": [
|
||||||
"b36894e98f67929846224aaa56e9243fe1fc8646",
|
"d50cac50de3700a54df2df480f412cc269104efc",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
"mathml/presentation-markup/operators/mo-movablelimits-ref.html": [
|
"mathml/presentation-markup/operators/mo-movablelimits-ref.html": [
|
||||||
|
@ -652625,7 +652832,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"mathml/presentation-markup/scripts/cramped-001.html": [
|
"mathml/presentation-markup/scripts/cramped-001.html": [
|
||||||
"2be1c8ad2e8c17b3fcc0f857567fc7c18f040c16",
|
"d0e636c022ecae289a07533bd45aecb4ef89541f",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"mathml/presentation-markup/scripts/subsup-1.html": [
|
"mathml/presentation-markup/scripts/subsup-1.html": [
|
||||||
|
@ -652712,6 +652919,14 @@
|
||||||
"2ad6b0b772c39cad147604523409d85bee999564",
|
"2ad6b0b772c39cad147604523409d85bee999564",
|
||||||
"testharness"
|
"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": [
|
"mathml/presentation-markup/tables/table-axis-height.html": [
|
||||||
"f9354266a7c6c42a75519e9771eb2c61536ad8e5",
|
"f9354266a7c6c42a75519e9771eb2c61536ad8e5",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -652824,6 +653039,10 @@
|
||||||
"d28f66c3d5f628dd6b3150251c818a3c7d11df8f",
|
"d28f66c3d5f628dd6b3150251c818a3c7d11df8f",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
|
"mathml/relations/css-styling/ignored-properties-001.html": [
|
||||||
|
"7500c73a3f155022231200484229bf1457464798",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"mathml/relations/css-styling/lengths-1-ref.html": [
|
"mathml/relations/css-styling/lengths-1-ref.html": [
|
||||||
"9fca6f49632ca080ee1b2a32a9ce2d251241dfcc",
|
"9fca6f49632ca080ee1b2a32a9ce2d251241dfcc",
|
||||||
"support"
|
"support"
|
||||||
|
@ -653077,7 +653296,7 @@
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
"mathml/relations/css-styling/not-participating-to-parent-layout.html": [
|
"mathml/relations/css-styling/not-participating-to-parent-layout.html": [
|
||||||
"1caebf1e630de2fdc9c879aa76e0a4c666fbe841",
|
"6445cde9ac1697ac7316c2baed7981f9b96de93b",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"mathml/relations/css-styling/padding-border-margin/border-001.html": [
|
"mathml/relations/css-styling/padding-border-margin/border-001.html": [
|
||||||
|
@ -653101,7 +653320,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"mathml/relations/css-styling/padding-border-margin/padding-002.html": [
|
"mathml/relations/css-styling/padding-border-margin/padding-002.html": [
|
||||||
"565dfc43b566b0a3c019437111ce21db7885c426",
|
"5bf9b6aec417a403e81401ec8163f2b234fde416",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"mathml/relations/css-styling/padding-border-margin/padding-border-margin-001-ref.html": [
|
"mathml/relations/css-styling/padding-border-margin/padding-border-margin-001-ref.html": [
|
||||||
|
@ -653333,7 +653552,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"mathml/support/mathml-fragments.js": [
|
"mathml/support/mathml-fragments.js": [
|
||||||
"7c7b003e9e683a2770520eeb82a42a0dd1307c9f",
|
"8376ccf375def30bec02e4226ea189140efcbe65",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"mathml/tools/axisheight.py": [
|
"mathml/tools/axisheight.py": [
|
||||||
|
@ -664408,6 +664627,10 @@
|
||||||
"0e5a4768e7626f666077e794e0731c9a1e3e9d35",
|
"0e5a4768e7626f666077e794e0731c9a1e3e9d35",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"payment-handler/app-supports-shipping-contact-delegation.js": [
|
||||||
|
"770e2de64f13eeef8a1ee21783c2997facc8ff0b",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"payment-handler/basic-card.js": [
|
"payment-handler/basic-card.js": [
|
||||||
"2db5d4b719fac4dbcfa65f4166c16a5b8d253097",
|
"2db5d4b719fac4dbcfa65f4166c16a5b8d253097",
|
||||||
"support"
|
"support"
|
||||||
|
@ -664484,6 +664707,10 @@
|
||||||
"b9a9dd82d247a80b00e4bc033eeea134d5f900c1",
|
"b9a9dd82d247a80b00e4bc033eeea134d5f900c1",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"payment-handler/supports-shipping-contact-delegation-manual.https.html": [
|
||||||
|
"75b3668981c900ecced0b1ffdd40a95f15125003",
|
||||||
|
"manual"
|
||||||
|
],
|
||||||
"payment-handler/untrusted-event.https.html": [
|
"payment-handler/untrusted-event.https.html": [
|
||||||
"900ac79d0d21f698707f6efe13a07dd234ed1a30",
|
"900ac79d0d21f698707f6efe13a07dd234ed1a30",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -677545,7 +677772,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"resources/chromium/webxr-test.js": [
|
"resources/chromium/webxr-test.js": [
|
||||||
"894e2a24f653e150b738fc576135ed4871a3a644",
|
"eae4d64b446ecc53ac1ed5210b8ce2c783d08f9e",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"resources/chromium/webxr-test.js.headers": [
|
"resources/chromium/webxr-test.js.headers": [
|
||||||
|
@ -677873,7 +678100,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"resources/test/tests/unit/test-return-restrictions.html": [
|
"resources/test/tests/unit/test-return-restrictions.html": [
|
||||||
"8472ba9c9ed3f0baed605813fad1717769875759",
|
"b846d4dc4300a990edf7a905f301dcaf75bee18c",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"resources/test/tests/unit/unpaired-surrogates.html": [
|
"resources/test/tests/unit/unpaired-surrogates.html": [
|
||||||
|
@ -677917,7 +678144,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"resources/testharness.js": [
|
"resources/testharness.js": [
|
||||||
"21d5fcc9417f3324617516402afeb45878acd9cf",
|
"15591042aa4cb0fdd75fe3bf56b9bdfb63fd161d",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"resources/testharness.js.headers": [
|
"resources/testharness.js.headers": [
|
||||||
|
@ -705289,7 +705516,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"webxr/resources/webxr_test_constants.js": [
|
"webxr/resources/webxr_test_constants.js": [
|
||||||
"e0330b80f53398a9ac0cff9edee7b82cc560a8b5",
|
"dc60f6739d417448c252a93de0f1f61c063e5a35",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"webxr/resources/webxr_util.js": [
|
"webxr/resources/webxr_util.js": [
|
||||||
|
@ -705489,7 +705716,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webxr/xrSession_visibilityState.https.html": [
|
"webxr/xrSession_visibilityState.https.html": [
|
||||||
"ebad10095e665cceee34d28004ebf25e06687eeb",
|
"e7a6041036f9d7c06133c602c976a87c8868dc3e",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html": [
|
"webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html": [
|
||||||
|
@ -705505,7 +705732,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webxr/xrView_oneframeupdate.https.html": [
|
"webxr/xrView_oneframeupdate.https.html": [
|
||||||
"4386433788c55dd13bc9a663b6796530e4852368",
|
"8edb2c0b265f18479644f312f91478d6029e3cd5",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webxr/xrView_sameObject.https.html": [
|
"webxr/xrView_sameObject.https.html": [
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[percentage-heights-007.html]
|
||||||
|
expected: FAIL
|
|
@ -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'\]]
|
[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
|
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
|
||||||
|
|
||||||
|
|
|
@ -17,3 +17,465 @@
|
||||||
[caption should be a supported system font.]
|
[caption should be a supported system font.]
|
||||||
expected: FAIL
|
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
|
||||||
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[matchMedia-display-none-iframe.html]
|
|
||||||
expected: ERROR
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[font-shorthand-serialization.html]
|
||||||
|
[The font shorthand should be serialized just like any other shorthand.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[contenttype_txt.html]
|
|
||||||
expected: CRASH
|
|
|
@ -26,3 +26,21 @@
|
||||||
[Reparenting an element into a descendant shadow scope nullifies the element reference.]
|
[Reparenting an element into a descendant shadow scope nullifies the element reference.]
|
||||||
expected: FAIL
|
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
|
||||||
|
|
||||||
|
|
|
@ -312,6 +312,18 @@
|
||||||
[<iframe>: separate response Content-Type: */* text/html]
|
[<iframe>: separate response Content-Type: */* text/html]
|
||||||
expected: FAIL
|
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
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -56,3 +56,6 @@
|
||||||
[separate text/javascript x/x]
|
[separate text/javascript x/x]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[traverse_the_history_1.html]
|
|
||||||
[Multiple history traversals from the same task]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[traverse_the_history_4.html]
|
|
||||||
[Multiple history traversals, last would be aborted]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[creating_browsing_context_test_01.html]
|
[creating_browsing_context_test_01.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[first argument: absolute url]
|
[first argument: absolute url]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[iframe_sandbox_popups_escaping-3.html]
|
[iframe_sandbox_popups_escaping-3.html]
|
||||||
type: testharness
|
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]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
[non-active-document.html]
|
||||||
|
[DOMParser]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[createHTMLDocument]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<template>]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
[form-submission-algorithm.html]
|
[form-submission-algorithm.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[If form's firing submission events is true, then return; 'submit' event]
|
[If form's firing submission events is true, then return; 'submit' event]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[If form's firing submission events is true, then return; 'invalid' event]
|
[If form's firing submission events is true, then return; 'invalid' event]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Cannot navigate (after constructing the entry list)]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[document-close-with-pending-script.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[document.close called while a script is pending]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -62,3 +62,9 @@
|
||||||
[X SNR (-675.9249049743026 dB) is not greater than or equal to 65.737. Got -675.9249049743026.]
|
[X SNR (-675.9249049743026 dB) is not greater than or equal to 65.737. Got -675.9249049743026.]
|
||||||
expected: FAIL
|
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
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[WorkerGlobalScope-close.html]
|
||||||
|
[Test sending a message after closing.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Worker-constructor.html]
|
||||||
|
expected: ERROR
|
|
@ -1,2 +0,0 @@
|
||||||
[transition_calc_implicit.html]
|
|
||||||
expected: TIMEOUT
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -22,12 +22,6 @@
|
||||||
<script>
|
<script>
|
||||||
'use strict';
|
'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.
|
// Firefox and Edge 18 serialize these as supplied.
|
||||||
// Blink and Safari have implementation-dependent or platform-dependent serializations.
|
// Blink and Safari have implementation-dependent or platform-dependent serializations.
|
||||||
function test_system_font(keyword) {
|
function test_system_font(keyword) {
|
||||||
|
@ -178,27 +172,19 @@ function test_specific(prefix) {
|
||||||
if (style) {
|
if (style) {
|
||||||
canonical.push(style);
|
canonical.push(style);
|
||||||
reference.style.fontStyle = style;
|
reference.style.fontStyle = style;
|
||||||
} else {
|
|
||||||
canonical.push(initial_style);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (variant) {
|
if (variant) {
|
||||||
canonical.push(variant);
|
canonical.push(variant);
|
||||||
reference.style.fontVariant = style;
|
reference.style.fontVariant = style;
|
||||||
} else {
|
|
||||||
canonical.push(initial_variant);
|
|
||||||
}
|
}
|
||||||
if (weight) {
|
if (weight) {
|
||||||
canonical.push(compute_weight(weight));
|
canonical.push(compute_weight(weight));
|
||||||
reference.style.fontWeight = style;
|
reference.style.fontWeight = style;
|
||||||
} else {
|
|
||||||
canonical.push(compute_weight(initial_weight));
|
|
||||||
}
|
}
|
||||||
if (stretch) {
|
if (stretch) {
|
||||||
canonical.push(stretch);
|
canonical.push(stretch);
|
||||||
reference.style.fontStretch = style;
|
reference.style.fontStretch = style;
|
||||||
} else {
|
|
||||||
canonical.push(initial_stretch);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const size = generate_size();
|
const size = generate_size();
|
||||||
|
@ -215,15 +201,19 @@ function test_specific(prefix) {
|
||||||
parts.push(family);
|
parts.push(family);
|
||||||
reference.style.fontFamily = 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);
|
canonical.push(family);
|
||||||
|
|
||||||
reference.remove();
|
reference.remove();
|
||||||
|
|
||||||
// Implementations differ on adjacent space when serializing '/'
|
test_computed_value('font', parts.join(' '), canonical.join(' '));
|
||||||
// https://github.com/w3c/csswg-drafts/issues/4282
|
|
||||||
const expected = canonical.join(' ');
|
|
||||||
test_computed_value('font', parts.join(' '), [expected, expected.replace('/', ' / ')]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Font style, variant, weight and stretch may appear in any order.
|
// Font style, variant, weight and stretch may appear in any order.
|
||||||
|
|
|
@ -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', 'italic small-caps lighter condensed smaller');
|
||||||
test_invalid_value('font', 'normal 100 semi-condensed oblique small-caps Menu');
|
test_invalid_value('font', 'normal 100 semi-condensed oblique small-caps Menu');
|
||||||
|
test_invalid_value('font', '100% larger / 2 fantasy');
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -167,7 +167,7 @@ function test_specific(prefix) {
|
||||||
if (lineHeight === 'normal')
|
if (lineHeight === 'normal')
|
||||||
canonical.push(size);
|
canonical.push(size);
|
||||||
else
|
else
|
||||||
canonical.push(size + '/' + lineHeight);
|
canonical.push(size + ' / ' + lineHeight);
|
||||||
} else {
|
} else {
|
||||||
parts.push(size);
|
parts.push(size);
|
||||||
canonical.push(size);
|
canonical.push(size);
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
border-width: 3px 7px 9px 11px;
|
border-width: 3px 7px 9px 11px;
|
||||||
border-color: yellow;
|
border-color: yellow;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
|
margin: 1px 3px 7px 9px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<!-- test all combinations of minmax from section 10.4 table at
|
<!-- test all combinations of minmax from section 10.4 table at
|
||||||
|
@ -30,77 +31,77 @@
|
||||||
<!-- iframe: intrinsic size is 300x150, no aspect ratio -->
|
<!-- iframe: intrinsic size is 300x150, no aspect ratio -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<iframe class="target"
|
<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>
|
</iframe>
|
||||||
</div>
|
</div>
|
||||||
<!-- spec 1: w > max-width -->
|
<!-- spec 1: w > max-width -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<iframe class="target" style="max-width:100px"
|
<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>
|
</iframe>
|
||||||
</div>
|
</div>
|
||||||
<!-- spec 2: w < min-width -->
|
<!-- spec 2: w < min-width -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<iframe class="target" style="min-width: 350px"
|
<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>
|
</iframe>
|
||||||
</div>
|
</div>
|
||||||
<!-- spec 3: h > max-height -->
|
<!-- spec 3: h > max-height -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<iframe class="target" style="max-height: 150px"
|
<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>
|
</iframe>
|
||||||
</div>
|
</div>
|
||||||
<!-- spec 4: h < min-height -->
|
<!-- spec 4: h < min-height -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<iframe class="target" style="min-height: 165px"
|
<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>
|
</iframe>
|
||||||
</div>
|
</div>
|
||||||
<!-- spec 5: (w > max-width) and (h > max-height), where (max-width/w ≤ max-height/h) -->
|
<!-- spec 5: (w > max-width) and (h > max-height), where (max-width/w ≤ max-height/h) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<iframe class="target" style="max-width: 240px; max-height: 135px"
|
<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>
|
</iframe>
|
||||||
</div>
|
</div>
|
||||||
<!-- spec 6: (w > max-width) and (h > max-height), where (max-width/w > max-height/h) -->
|
<!-- spec 6: (w > max-width) and (h > max-height), where (max-width/w > max-height/h) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<iframe class="target" style="max-width: 270px; max-height: 120px"
|
<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>
|
</iframe>
|
||||||
</div>
|
</div>
|
||||||
<!-- spec 7: (w < min-width) and (h < min-height), where (min-width/w ≤ min-height/h) -->
|
<!-- spec 7: (w < min-width) and (h < min-height), where (min-width/w ≤ min-height/h) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<iframe class="target" style="min-width: 360px; min-height: 165px"
|
<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>
|
</iframe>
|
||||||
</div>
|
</div>
|
||||||
<!-- spec 8: (w < min-width) and (h < min-height), where (min-width/w > min-height/h) -->
|
<!-- spec 8: (w < min-width) and (h < min-height), where (min-width/w > min-height/h) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<iframe class="target" style="min-width: 330px; min-height: 180px"
|
<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>
|
</iframe>
|
||||||
</div>
|
</div>
|
||||||
<!-- spec 9: (w < min-width) and (h > max-height) -->
|
<!-- spec 9: (w < min-width) and (h > max-height) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<iframe class="target" style="min-width: 330px; max-height: 135px"
|
<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>
|
</iframe>
|
||||||
</div>
|
</div>
|
||||||
<!-- spec 10: (w > max-width) and (h < min-height) -->
|
<!-- spec 10: (w > max-width) and (h < min-height) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<iframe class="target" style="max-width: 240px; min-height: 165px"
|
<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>
|
</iframe>
|
||||||
</div>
|
</div>
|
||||||
|
@ -109,136 +110,136 @@
|
||||||
<!-- image dimensions: 200x150. images has intrinic size and aspect ratio -->
|
<!-- image dimensions: 200x150. images has intrinic size and aspect ratio -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target png"
|
<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>
|
</div>
|
||||||
<!-- spec 1: w > max-width -->
|
<!-- spec 1: w > max-width -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target png" style="max-width: 180px"
|
<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>
|
</div>
|
||||||
<!-- spec 2: w < min-width -->
|
<!-- spec 2: w < min-width -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target png" style="min-width: 220px"
|
<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>
|
</div>
|
||||||
|
|
||||||
<!-- spec 3: h > max-height -->
|
<!-- spec 3: h > max-height -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target png" style="max-height: 135px"
|
<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>
|
</div>
|
||||||
<!-- spec 4: h < min-height -->
|
<!-- spec 4: h < min-height -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target png" style="min-height: 165px"
|
<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>
|
</div>
|
||||||
<!-- spec 5: (w > max-width) and (h > max-height), where (max-width/w ≤ max-height/h) -->
|
<!-- spec 5: (w > max-width) and (h > max-height), where (max-width/w ≤ max-height/h) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target png" style="max-width: 160px; max-height: 135px"
|
<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>
|
</div>
|
||||||
<!-- spec 6: (w > max-width) and (h > max-height), where (max-width/w > max-height/h) -->
|
<!-- spec 6: (w > max-width) and (h > max-height), where (max-width/w > max-height/h) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target png" style="max-width: 180px; max-height: 120px"
|
<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>
|
</div>
|
||||||
<!-- spec 7: (w < min-width) and (h < min-height), where (min-width/w ≤ min-height/h) -->
|
<!-- spec 7: (w < min-width) and (h < min-height), where (min-width/w ≤ min-height/h) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target png" style="min-width: 240px;min-height: 165px"
|
<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>
|
</div>
|
||||||
<!-- spec 8: (w < min-width) and (h < min-height), where (min-width/w > min-height/h) -->
|
<!-- spec 8: (w < min-width) and (h < min-height), where (min-width/w > min-height/h) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target png" style="min-width: 220px;min-height: 180px"
|
<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>
|
</div>
|
||||||
<!-- spec 9: (w < min-width) and (h > max-height) -->
|
<!-- spec 9: (w < min-width) and (h > max-height) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target png" style="min-width: 220px; max-height: 130px"
|
<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>
|
</div>
|
||||||
<!-- spec 10: (w > max-width) and (h < min-height) -->
|
<!-- spec 10: (w > max-width) and (h < min-height) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target png" style="max-width: 180px; min-height: 165px"
|
<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>
|
</div>
|
||||||
<!-- IMG SVG tests -->
|
<!-- IMG SVG tests -->
|
||||||
<!-- image dimensions: 200x150. images has no intrinic size and no aspect ratio -->
|
<!-- image dimensions: 200x150. images has no intrinic size and no aspect ratio -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target svg"
|
<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>
|
</div>
|
||||||
<!-- spec 1: w > max-width -->
|
<!-- spec 1: w > max-width -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target svg" style="max-width: 180px"
|
<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>
|
</div>
|
||||||
<!-- spec 2: w < min-width -->
|
<!-- spec 2: w < min-width -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target svg" style="min-width: 220px"
|
<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>
|
</div>
|
||||||
|
|
||||||
<!-- spec 3: h > max-height -->
|
<!-- spec 3: h > max-height -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target svg" style="max-height: 135px"
|
<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>
|
</div>
|
||||||
<!-- spec 4: h < min-height -->
|
<!-- spec 4: h < min-height -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target svg" style="min-height: 165px"
|
<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>
|
</div>
|
||||||
<!-- spec 5: (w > max-width) and (h > max-height), where (max-width/w ≤ max-height/h) -->
|
<!-- spec 5: (w > max-width) and (h > max-height), where (max-width/w ≤ max-height/h) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target svg" style="max-width: 160px; max-height: 135px"
|
<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>
|
</div>
|
||||||
<!-- spec 6: (w > max-width) and (h > max-height), where (max-width/w > max-height/h) -->
|
<!-- spec 6: (w > max-width) and (h > max-height), where (max-width/w > max-height/h) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target svg" style="max-width: 180px; max-height: 120px"
|
<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>
|
</div>
|
||||||
<!-- spec 7: (w < min-width) and (h < min-height), where (min-width/w ≤ min-height/h) -->
|
<!-- spec 7: (w < min-width) and (h < min-height), where (min-width/w ≤ min-height/h) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target svg" style="min-width: 240px;min-height: 165px"
|
<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>
|
</div>
|
||||||
<!-- spec 8: (w < min-width) and (h < min-height), where (min-width/w > min-height/h) -->
|
<!-- spec 8: (w < min-width) and (h < min-height), where (min-width/w > min-height/h) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target svg" style="min-width: 220px;min-height: 180px"
|
<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>
|
</div>
|
||||||
<!-- spec 9: (w < min-width) and (h > max-height) -->
|
<!-- spec 9: (w < min-width) and (h > max-height) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target svg" style="min-width: 220px; max-height: 130px"
|
<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>
|
</div>
|
||||||
<!-- spec 10: (w > max-width) and (h < min-height) -->
|
<!-- spec 10: (w > max-width) and (h < min-height) -->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="target svg" style="max-width: 180px; min-height: 165px"
|
<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>
|
</div>
|
||||||
<!-- SVG tests -->
|
<!-- SVG tests -->
|
||||||
|
@ -247,26 +248,26 @@
|
||||||
<!-- Just viewbox. Has intrinsic aspect ratio, but no width/height -->
|
<!-- Just viewbox. Has intrinsic aspect ratio, but no width/height -->
|
||||||
<div class="container">
|
<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=""
|
<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>
|
</div>
|
||||||
<!-- Just viewbox. Has aspect_ration, but no intrinsic size
|
<!-- Just viewbox. Has aspect_ration, but no intrinsic size
|
||||||
inline_width defaults to container width -->
|
inline_width defaults to container width -->
|
||||||
<div class="container">
|
<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"
|
<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>
|
</div>
|
||||||
<!-- Viewbox + svg width. Has aspect_ratio and width. Height is scaled -->
|
<!-- Viewbox + svg width. Has aspect_ratio and width. Height is scaled -->
|
||||||
<div class="container">
|
<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"
|
<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>
|
</div>
|
||||||
<!-- Viewbox + svg height. Has aspect_ratio and height. Width is scaled -->
|
<!-- Viewbox + svg height. Has aspect_ratio and height. Width is scaled -->
|
||||||
<div class="container">
|
<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"
|
<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>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -37,7 +37,7 @@ var validProperties = {
|
||||||
boxShadow: 'rgb(10, 20, 30) 10px 20px 30px 40px inset',
|
boxShadow: 'rgb(10, 20, 30) 10px 20px 30px 40px inset',
|
||||||
color: 'rgba(10, 20, 30, 0.4)',
|
color: 'rgba(10, 20, 30, 0.4)',
|
||||||
float: 'right',
|
float: 'right',
|
||||||
font: 'italic small-caps 900 normal 10px / 20px sans-serif',
|
font: 'italic small-caps 900 10px / 20px sans-serif',
|
||||||
fontFeatureSettings: '"vert" 2',
|
fontFeatureSettings: '"vert" 2',
|
||||||
fontSizeAdjust: '0.5',
|
fontSizeAdjust: '0.5',
|
||||||
fontKerning: 'none',
|
fontKerning: 'none',
|
||||||
|
|
|
@ -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>
|
|
@ -1,5 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!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/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<style>
|
<style>
|
||||||
|
@ -7,12 +11,14 @@ div {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#scroller {
|
#scroller {
|
||||||
height: 600px;
|
height: 600px;
|
||||||
width: 600px;
|
width: 600px;
|
||||||
overflow: scroll;
|
overflow: scroll;
|
||||||
scroll-snap-type: both mandatory;
|
scroll-snap-type: both mandatory;
|
||||||
}
|
}
|
||||||
|
|
||||||
#space {
|
#space {
|
||||||
width: 2000px;
|
width: 2000px;
|
||||||
height: 2000px;
|
height: 2000px;
|
||||||
|
@ -30,57 +36,41 @@ div {
|
||||||
top: 0px;
|
top: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#right-top {
|
|
||||||
left: 800px;
|
|
||||||
top: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#left-bottom {
|
#left-bottom {
|
||||||
left: 0px;
|
left: 0px;
|
||||||
top: 800px;
|
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 {
|
#right-top {
|
||||||
left: 1800px;
|
left: 800px;
|
||||||
top: 1800px;
|
top: 0px;
|
||||||
scroll-margin-top: 1000px;
|
/* 800px scroll-margin makes the snap area span to the bottom end of the
|
||||||
scroll-margin-left: 1000px;
|
left-bottom area */
|
||||||
|
scroll-margin-bottom: 800px;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
<div id="scroller">
|
<div id="scroller">
|
||||||
<div id="space"></div>
|
<div id="space"></div>
|
||||||
<div id="left-top" class="snap"></div>
|
<div id="left-top" class="snap"></div>
|
||||||
<div id="right-top" class="snap"></div>
|
|
||||||
<div id="left-bottom" 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>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
var scroller = document.getElementById("scroller");
|
|
||||||
test(() => {
|
test(() => {
|
||||||
|
const scroller = document.getElementById("scroller");
|
||||||
scroller.scrollTo(0, 0);
|
scroller.scrollTo(0, 0);
|
||||||
assert_equals(scroller.scrollLeft, 0);
|
assert_equals(scroller.scrollLeft, 0);
|
||||||
assert_equals(scroller.scrollTop, 0);
|
assert_equals(scroller.scrollTop, 0);
|
||||||
scroller.scrollTo(300, 0);
|
scroller.scrollTo(500, 600);
|
||||||
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);
|
|
||||||
assert_equals(scroller.scrollLeft, 800);
|
assert_equals(scroller.scrollLeft, 800);
|
||||||
assert_equals(scroller.scrollTop, 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>
|
</script>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -10,8 +10,8 @@
|
||||||
<script>
|
<script>
|
||||||
test(function() {
|
test(function() {
|
||||||
var target = document.getElementById('target');
|
var target = document.getElementById('target');
|
||||||
assert_equals(target.style.cssText, 'font: 10px/1 Ahem;');
|
assert_equals(target.style.cssText, 'font: 10px / 1 Ahem;');
|
||||||
assert_equals(target.style.font, '10px/1 Ahem');
|
assert_equals(target.style.font, '10px / 1 Ahem');
|
||||||
}, "The font shorthand should be serialized just like any other shorthand.");
|
}, "The font shorthand should be serialized just like any other shorthand.");
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -92,15 +92,6 @@
|
||||||
{at: 1, expect: 'path("M0 0H 300") 600px 0deg'},
|
{at: 1, expect: 'path("M0 0H 300") 600px 0deg'},
|
||||||
{at: 1.5, expect: 'path("M0 0H 300") 650px 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>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -263,4 +263,207 @@
|
||||||
assert_equals(lightParent.ariaActiveDescendantElement, optionElement);
|
assert_equals(lightParent.ariaActiveDescendantElement, optionElement);
|
||||||
}, "Reparenting an element into a descendant shadow scope nullifies the element reference.");
|
}, "Reparenting an element into a descendant shadow scope nullifies the element reference.");
|
||||||
</script>
|
</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>
|
</html>
|
||||||
|
|
|
@ -17,25 +17,27 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
test(function() { assert_true(testSet('foo', '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('fooBar', 'data-foo-bar')); },
|
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--')); },
|
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')); },
|
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')); },
|
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-')); },
|
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')); },
|
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') }); },
|
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') }); },
|
test(function() { assert_throws('INVALID_CHARACTER_ERR', function() { testSet('foo\x20', 'dummy') }); },
|
||||||
"Setting element.dataset['foo\x20'] 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('foo\uF900', 'dummy') }); },
|
test(function() { assert_throws('INVALID_CHARACTER_ERR', function() { testSet('\u037Efoo', 'dummy') }); },
|
||||||
"Setting element.dataset['foo\uF900'] should throw an INVALID_CHARACTER_ERR'");
|
"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>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -8,11 +8,19 @@
|
||||||
<script>
|
<script>
|
||||||
'use strict';
|
'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 () => {
|
promise_test(async () => {
|
||||||
let iframe = document.querySelector('iframe');
|
let iframe = document.querySelector('iframe');
|
||||||
let iframeDocument = iframe.contentDocument;
|
let iframeDocument = iframe.contentDocument;
|
||||||
await waitForLoad(window);
|
await waitForLoad(window);
|
||||||
assert_not_equals(document.activeElement, iframe);
|
assert_not_equals(document.activeElement, iframe);
|
||||||
assert_equals(iframeDocument.activeElement, iframeDocument.body);
|
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>
|
</script>
|
||||||
|
|
|
@ -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>
|
|
@ -1,10 +1,8 @@
|
||||||
[allowed-to-play.html]
|
[allowed-to-play.html]
|
||||||
expected:
|
expected:
|
||||||
if product == "edge_webdriver": TIMEOUT
|
|
||||||
if product == "safari": ERROR # https://bugs.webkit.org/show_bug.cgi?id=190775
|
if product == "safari": ERROR # https://bugs.webkit.org/show_bug.cgi?id=190775
|
||||||
|
|
||||||
|
|
||||||
[<audio> autoplay]
|
[<audio> autoplay]
|
||||||
expected:
|
expected:
|
||||||
if product == "edge_webdriver": TIMEOUT
|
|
||||||
if product == "safari": FAIL # https://bugs.webkit.org/show_bug.cgi?id=190775
|
if product == "safari": FAIL # https://bugs.webkit.org/show_bug.cgi?id=190775
|
||||||
|
|
|
@ -1,9 +1,4 @@
|
||||||
[html-elements.html]
|
[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)]
|
[Compare CSS span definitions (only valid if pre-reqs pass)]
|
||||||
expected:
|
expected:
|
||||||
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=187052
|
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=187052
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[size.html]
|
|
||||||
type: reftest
|
|
||||||
expected:
|
|
||||||
if product == "edge_webdriver": FAIL # https://github.com/web-platform-tests/wpt/issues/15159
|
|
|
@ -1,7 +1,6 @@
|
||||||
[context.any.sharedworker.html]
|
[context.any.sharedworker.html]
|
||||||
[context]
|
[context]
|
||||||
expected:
|
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
|
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
|
||||||
|
|
||||||
[context.any.serviceworker.html]
|
[context.any.serviceworker.html]
|
||||||
|
|
|
@ -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]
|
[order-of-metas.any.sharedworker.html]
|
||||||
[foo\n]
|
|
||||||
expected:
|
|
||||||
if product == "edge_webdriver": FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[foo]
|
[foo]
|
||||||
expected:
|
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
|
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
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[order-of-metas.window.html]
|
|
||||||
[<meta name=timeout> exists]
|
|
||||||
expected:
|
|
||||||
if product == "edge_webdriver": FAIL
|
|
|
@ -1,7 +1,6 @@
|
||||||
[secure-context.https.any.sharedworker.html]
|
[secure-context.https.any.sharedworker.html]
|
||||||
[secure-context]
|
[secure-context]
|
||||||
expected:
|
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
|
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]
|
[secure-context.https.any.serviceworker.html]
|
||||||
|
|
|
@ -1,20 +1,6 @@
|
||||||
[title.any.html]
|
|
||||||
[foobar\n]
|
|
||||||
expected:
|
|
||||||
if product == "edge_webdriver": FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[title.any.sharedworker.html]
|
[title.any.sharedworker.html]
|
||||||
[foobar\n]
|
|
||||||
expected:
|
|
||||||
if product == "edge_webdriver": FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[foobar]
|
[foobar]
|
||||||
expected:
|
expected:
|
||||||
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
|
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
|
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
[file_upload.sub.html]
|
[file_upload.sub.html]
|
||||||
expected:
|
|
||||||
if product == "edge_webdriver": ERROR
|
|
||||||
|
|
||||||
[File upload using testdriver]
|
[File upload using testdriver]
|
||||||
expected:
|
expected:
|
||||||
if product == "epiphany" or product == "webkit": FAIL
|
if product == "epiphany" or product == "webkit": FAIL
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
// (https://github.com/tidoust/reffy-reports)
|
// (https://github.com/tidoust/reffy-reports)
|
||||||
// Source: Media Capture and Streams (https://w3c.github.io/mediacapture-main/)
|
// Source: Media Capture and Streams (https://w3c.github.io/mediacapture-main/)
|
||||||
|
|
||||||
[Exposed=Window,
|
[Exposed=Window]
|
||||||
Constructor,
|
|
||||||
Constructor(MediaStream stream),
|
|
||||||
Constructor(sequence<MediaStreamTrack> tracks)]
|
|
||||||
interface MediaStream : EventTarget {
|
interface MediaStream : EventTarget {
|
||||||
|
constructor();
|
||||||
|
constructor(MediaStream stream);
|
||||||
|
constructor(sequence<MediaStreamTrack> tracks);
|
||||||
readonly attribute DOMString id;
|
readonly attribute DOMString id;
|
||||||
sequence<MediaStreamTrack> getAudioTracks();
|
sequence<MediaStreamTrack> getAudioTracks();
|
||||||
sequence<MediaStreamTrack> getVideoTracks();
|
sequence<MediaStreamTrack> getVideoTracks();
|
||||||
|
@ -37,7 +37,7 @@ interface MediaStreamTrack : EventTarget {
|
||||||
MediaTrackCapabilities getCapabilities();
|
MediaTrackCapabilities getCapabilities();
|
||||||
MediaTrackConstraints getConstraints();
|
MediaTrackConstraints getConstraints();
|
||||||
MediaTrackSettings getSettings();
|
MediaTrackSettings getSettings();
|
||||||
Promise<void> applyConstraints(optional MediaTrackConstraints constraints);
|
Promise<void> applyConstraints(optional MediaTrackConstraints constraints = {});
|
||||||
};
|
};
|
||||||
|
|
||||||
enum MediaStreamTrackState {
|
enum MediaStreamTrackState {
|
||||||
|
@ -133,8 +133,9 @@ enum VideoResizeModeEnum {
|
||||||
"crop-and-scale"
|
"crop-and-scale"
|
||||||
};
|
};
|
||||||
|
|
||||||
[Exposed=Window, Constructor(DOMString type, MediaStreamTrackEventInit eventInitDict)]
|
[Exposed=Window]
|
||||||
interface MediaStreamTrackEvent : Event {
|
interface MediaStreamTrackEvent : Event {
|
||||||
|
constructor(DOMString type, MediaStreamTrackEventInit eventInitDict);
|
||||||
[SameObject] readonly attribute MediaStreamTrack track;
|
[SameObject] readonly attribute MediaStreamTrack track;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -180,7 +181,7 @@ partial interface Navigator {
|
||||||
|
|
||||||
partial interface MediaDevices {
|
partial interface MediaDevices {
|
||||||
MediaTrackSupportedConstraints getSupportedConstraints();
|
MediaTrackSupportedConstraints getSupportedConstraints();
|
||||||
Promise<MediaStream> getUserMedia(optional MediaStreamConstraints constraints);
|
Promise<MediaStream> getUserMedia(optional MediaStreamConstraints constraints = {});
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary MediaStreamConstraints {
|
dictionary MediaStreamConstraints {
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -20,7 +20,7 @@
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
<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>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<math>
|
<math>
|
||||||
|
|
|
@ -118,7 +118,7 @@
|
||||||
test(function() {
|
test(function() {
|
||||||
assert_true(MathMLFeatureDetection.has_mspace());
|
assert_true(MathMLFeatureDetection.has_mspace());
|
||||||
assert_cramped("munderover-001", false, "base");
|
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");
|
assert_cramped("munderover-003", false, "non-accent overscript");
|
||||||
}, "child of munderover");
|
}, "child of munderover");
|
||||||
|
|
||||||
|
@ -195,7 +195,7 @@
|
||||||
test(function() {
|
test(function() {
|
||||||
assert_true(MathMLFeatureDetection.has_mspace());
|
assert_true(MathMLFeatureDetection.has_mspace());
|
||||||
assert_cramped("munderover-011", false, "base");
|
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");
|
assert_cramped("munderover-013", false, "non-accent overscript");
|
||||||
}, "child of munderover, from in-flow children");
|
}, "child of munderover, from in-flow children");
|
||||||
|
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -22,7 +22,6 @@
|
||||||
if (!FragmentHelper.isValidChildOfMrow(tag) ||
|
if (!FragmentHelper.isValidChildOfMrow(tag) ||
|
||||||
FragmentHelper.isEmpty(tag))
|
FragmentHelper.isEmpty(tag))
|
||||||
continue;
|
continue;
|
||||||
// TODO: Add floats too?
|
|
||||||
["display: none",
|
["display: none",
|
||||||
"display: contents",
|
"display: contents",
|
||||||
"position: absolute",
|
"position: absolute",
|
||||||
|
|
|
@ -21,7 +21,8 @@
|
||||||
if (!FragmentHelper.isValidChildOfMrow(tag))
|
if (!FragmentHelper.isValidChildOfMrow(tag))
|
||||||
continue;
|
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)) {
|
if (FragmentHelper.isEmpty(tag)) {
|
||||||
test(function() {
|
test(function() {
|
||||||
|
|
|
@ -117,8 +117,10 @@ var MathMLFragments = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var FragmentHelper = {
|
var FragmentHelper = {
|
||||||
|
mathml_namespace: "http://www.w3.org/1998/Math/MathML",
|
||||||
|
|
||||||
createElement: function(tag) {
|
createElement: function(tag) {
|
||||||
return document.createElementNS("http://www.w3.org/1998/Math/MathML", tag);
|
return document.createElementNS(this.mathml_namespace, tag);
|
||||||
},
|
},
|
||||||
|
|
||||||
isValidChildOfMrow: function(tag) {
|
isValidChildOfMrow: function(tag) {
|
||||||
|
@ -158,5 +160,22 @@ var FragmentHelper = {
|
||||||
if (element.firstElementChild)
|
if (element.firstElementChild)
|
||||||
return element.firstElementChild;
|
return element.firstElementChild;
|
||||||
return this.appendChild(fragment);
|
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;
|
||||||
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -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));
|
||||||
|
});
|
|
@ -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>
|
|
@ -282,8 +282,21 @@ class MockRuntime {
|
||||||
}
|
}
|
||||||
|
|
||||||
simulateVisibilityChange(visibilityState) {
|
simulateVisibilityChange(visibilityState) {
|
||||||
// TODO(https://crbug.com/982099): Chrome currently does not have a way for
|
let mojoState = null;
|
||||||
// devices to bubble up any form of visibilityChange.
|
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) {
|
setBoundsGeometry(bounds) {
|
||||||
|
@ -403,28 +416,37 @@ class MockRuntime {
|
||||||
// This function converts between the matrix provided by the WebXR test API
|
// This function converts between the matrix provided by the WebXR test API
|
||||||
// and the internal data representation.
|
// and the internal data representation.
|
||||||
getEye(fakeXRViewInit) {
|
getEye(fakeXRViewInit) {
|
||||||
let m = fakeXRViewInit.projectionMatrix;
|
let fov = null;
|
||||||
|
|
||||||
function toDegrees(tan) {
|
if (fakeXRViewInit.fieldOfView) {
|
||||||
return Math.atan(tan) * 180 / Math.PI;
|
fov = {
|
||||||
}
|
upDegrees: fakeXRViewInit.fieldOfView.upDegrees,
|
||||||
|
downDegrees: fakeXRViewInit.fieldOfView.downDegrees,
|
||||||
|
leftDegrees: fakeXRViewInit.fieldOfView.leftDegrees,
|
||||||
|
rightDegrees: fakeXRViewInit.fieldOfView.rightDegrees
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
let m = fakeXRViewInit.projectionMatrix;
|
||||||
|
|
||||||
let xScale = m[0];
|
function toDegrees(tan) {
|
||||||
let yScale = m[5];
|
return Math.atan(tan) * 180 / Math.PI;
|
||||||
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 {
|
let leftTan = (1 - m[8]) / m[0];
|
||||||
fieldOfView: {
|
let rightTan = (1 + m[8]) / m[0];
|
||||||
|
let upTan = (1 + m[9]) / m[5];
|
||||||
|
let downTan = (1 - m[9]) / m[5];
|
||||||
|
|
||||||
|
fov = {
|
||||||
upDegrees: toDegrees(upTan),
|
upDegrees: toDegrees(upTan),
|
||||||
downDegrees: toDegrees(downTan),
|
downDegrees: toDegrees(downTan),
|
||||||
leftDegrees: toDegrees(leftTan),
|
leftDegrees: toDegrees(leftTan),
|
||||||
rightDegrees: toDegrees(rightTan)
|
rightDegrees: toDegrees(rightTan)
|
||||||
},
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
fieldOfView: fov,
|
||||||
headFromEye: composeGFXTransform(fakeXRViewInit.viewOffset),
|
headFromEye: composeGFXTransform(fakeXRViewInit.viewOffset),
|
||||||
renderWidth: fakeXRViewInit.resolution.width,
|
renderWidth: fakeXRViewInit.resolution.width,
|
||||||
renderHeight: fakeXRViewInit.resolution.height
|
renderHeight: fakeXRViewInit.resolution.height
|
||||||
|
|
|
@ -81,7 +81,7 @@ promise_test(() => {
|
||||||
assert_equals(harness.status, 'ERROR');
|
assert_equals(harness.status, 'ERROR');
|
||||||
assert_equals(
|
assert_equals(
|
||||||
harness.message,
|
harness.message,
|
||||||
'test named "null" inappropriately returned a value'
|
'Test named "null" inappropriately returned a value'
|
||||||
);
|
);
|
||||||
assert_equals(tests.before, 'PASS');
|
assert_equals(tests.before, 'PASS');
|
||||||
assert_equals(tests.null, 'PASS');
|
assert_equals(tests.null, 'PASS');
|
||||||
|
@ -100,7 +100,7 @@ promise_test(() => {
|
||||||
assert_equals(harness.status, 'ERROR');
|
assert_equals(harness.status, 'ERROR');
|
||||||
assert_equals(
|
assert_equals(
|
||||||
harness.message,
|
harness.message,
|
||||||
'test named "object" inappropriately returned a value'
|
'Test named "object" inappropriately returned a value'
|
||||||
);
|
);
|
||||||
assert_equals(tests.before, 'PASS');
|
assert_equals(tests.before, 'PASS');
|
||||||
assert_equals(tests.object, 'PASS');
|
assert_equals(tests.object, 'PASS');
|
||||||
|
@ -119,7 +119,7 @@ promise_test(() => {
|
||||||
assert_equals(harness.status, 'ERROR');
|
assert_equals(harness.status, 'ERROR');
|
||||||
assert_equals(
|
assert_equals(
|
||||||
harness.message,
|
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.before, 'PASS');
|
||||||
assert_equals(tests.thenable, 'PASS');
|
assert_equals(tests.thenable, 'PASS');
|
||||||
|
@ -143,7 +143,7 @@ promise_test(() => {
|
||||||
assert_equals(harness.status, 'ERROR');
|
assert_equals(harness.status, 'ERROR');
|
||||||
assert_equals(
|
assert_equals(
|
||||||
harness.message,
|
harness.message,
|
||||||
'test named "restricted" inappropriately returned a value'
|
'Test named "restricted" inappropriately returned a value'
|
||||||
);
|
);
|
||||||
assert_equals(tests.before, 'PASS');
|
assert_equals(tests.before, 'PASS');
|
||||||
assert_equals(tests.restricted, 'PASS');
|
assert_equals(tests.restricted, 'PASS');
|
||||||
|
|
|
@ -544,7 +544,7 @@ policies and contribution forms [3].
|
||||||
var value = test_obj.step(func, test_obj, test_obj);
|
var value = test_obj.step(func, test_obj, test_obj);
|
||||||
|
|
||||||
if (value !== undefined) {
|
if (value !== undefined) {
|
||||||
var msg = "test named \"" + test_name +
|
var msg = "Test named \"" + test_name +
|
||||||
"\" inappropriately returned a value";
|
"\" inappropriately returned a value";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -28,6 +28,14 @@ const VALID_POSE_TRANSFORM = {
|
||||||
const VALID_PROJECTION_MATRIX =
|
const VALID_PROJECTION_MATRIX =
|
||||||
[1, 0, 0, 0, 0, 1, 0, 0, 3, 2, -1, -1, 0, 0, -0.2, 0];
|
[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
|
// A valid input grip matrix for when we don't care about specific values
|
||||||
const VALID_GRIP = [1, 0, 0, 0,
|
const VALID_GRIP = [1, 0, 0, 0,
|
||||||
0, 1, 0, 0,
|
0, 1, 0, 0,
|
||||||
|
|
|
@ -20,7 +20,7 @@ let testFunction = function(session, fakeDeviceController, t) {
|
||||||
let eventPromise = eventWatcher.wait_for(
|
let eventPromise = eventWatcher.wait_for(
|
||||||
["visibilitychange", "visibilitychange", "framefired", "watcherdone"]);
|
["visibilitychange", "visibilitychange", "framefired", "watcherdone"]);
|
||||||
|
|
||||||
function onFrame(t, frame) {
|
function onFrame(timestamp, frame) {
|
||||||
t.step( () => {
|
t.step( () => {
|
||||||
// The session should not fire any animation frames while the visibility
|
// The session should not fire any animation frames while the visibility
|
||||||
// state is hidden.
|
// state is hidden.
|
||||||
|
@ -39,7 +39,7 @@ let testFunction = function(session, fakeDeviceController, t) {
|
||||||
session.removeEventListener("visibilitychange", onSessionVisibilityChangeHidden, false);
|
session.removeEventListener("visibilitychange", onSessionVisibilityChangeHidden, false);
|
||||||
session.addEventListener("visibilitychange", onSessionVisibilityChangeVisible, false);
|
session.addEventListener("visibilitychange", onSessionVisibilityChangeVisible, false);
|
||||||
|
|
||||||
session.requestAnimationFrame()
|
session.requestAnimationFrame(onFrame)
|
||||||
|
|
||||||
t.step_timeout(() => {
|
t.step_timeout(() => {
|
||||||
fakeDeviceController.simulateVisibilityChange("visible");
|
fakeDeviceController.simulateVisibilityChange("visible");
|
||||||
|
@ -73,6 +73,8 @@ let testFunction = function(session, fakeDeviceController, t) {
|
||||||
|
|
||||||
session.addEventListener("visibilitychange", onSessionVisibilityChangeHidden, false);
|
session.addEventListener("visibilitychange", onSessionVisibilityChangeHidden, false);
|
||||||
fakeDeviceController.simulateVisibilityChange("hidden");
|
fakeDeviceController.simulateVisibilityChange("hidden");
|
||||||
|
|
||||||
|
return eventPromise;
|
||||||
};
|
};
|
||||||
|
|
||||||
xr_session_promise_test(
|
xr_session_promise_test(
|
||||||
|
|
|
@ -13,14 +13,20 @@ let testName = "XRView projection matrices update near and far depths on the "
|
||||||
|
|
||||||
const fakeViews = [{
|
const fakeViews = [{
|
||||||
eye:"left",
|
eye:"left",
|
||||||
projectionMatrix: VALID_PROJECTION_MATRIX,
|
|
||||||
viewOffset: LEFT_OFFSET,
|
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",
|
eye:"right",
|
||||||
projectionMatrix: VALID_PROJECTION_MATRIX,
|
|
||||||
viewOffset: RIGHT_OFFSET,
|
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
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue