mirror of
https://github.com/servo/servo.git
synced 2025-06-27 02:23:41 +01:00
Update web-platform-tests to revision 887d08e63a19b14acf3217df77f12c121a792fed
This commit is contained in:
parent
97ad913dc2
commit
a41065a1f4
65 changed files with 1433 additions and 463 deletions
|
@ -34,6 +34,3 @@
|
||||||
[Revoke blob URL after creating Request, will fetch]
|
[Revoke blob URL after creating Request, will fetch]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Revoke blob URL after calling fetch, fetch should succeed]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -76677,6 +76677,18 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/CSS2/positioning/abspos-negative-margin-001.html": [
|
||||||
|
[
|
||||||
|
"css/CSS2/positioning/abspos-negative-margin-001.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/CSS2/positioning/abspos-negative-margin-001-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/CSS2/positioning/abspos-overflow-001.xht": [
|
"css/CSS2/positioning/abspos-overflow-001.xht": [
|
||||||
[
|
[
|
||||||
"css/CSS2/positioning/abspos-overflow-001.xht",
|
"css/CSS2/positioning/abspos-overflow-001.xht",
|
||||||
|
@ -201401,6 +201413,42 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"mathml/presentation-markup/operators/mo-movablelimits-default.html": [
|
||||||
|
[
|
||||||
|
"mathml/presentation-markup/operators/mo-movablelimits-default.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/mathml/presentation-markup/operators/mo-movablelimits-default-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"mathml/presentation-markup/operators/mo-movablelimits-dynamic.html": [
|
||||||
|
[
|
||||||
|
"mathml/presentation-markup/operators/mo-movablelimits-dynamic.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/mathml/presentation-markup/operators/mo-movablelimits-dynamic-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"mathml/presentation-markup/operators/mo-movablelimits.html": [
|
||||||
|
[
|
||||||
|
"mathml/presentation-markup/operators/mo-movablelimits.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/mathml/presentation-markup/operators/mo-movablelimits-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"mathml/presentation-markup/operators/mo-paint-lspace-rspace.html": [
|
"mathml/presentation-markup/operators/mo-paint-lspace-rspace.html": [
|
||||||
[
|
[
|
||||||
"mathml/presentation-markup/operators/mo-paint-lspace-rspace.html",
|
"mathml/presentation-markup/operators/mo-paint-lspace-rspace.html",
|
||||||
|
@ -201485,6 +201533,18 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"mathml/relations/css-styling/mathsize-attribute.html": [
|
||||||
|
[
|
||||||
|
"mathml/relations/css-styling/mathsize-attribute.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/mathml/relations/css-styling/mathsize-attribute-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"mathml/relations/css-styling/mathvariant-bold-fraktur.html": [
|
"mathml/relations/css-styling/mathvariant-bold-fraktur.html": [
|
||||||
[
|
[
|
||||||
"mathml/relations/css-styling/mathvariant-bold-fraktur.html",
|
"mathml/relations/css-styling/mathvariant-bold-fraktur.html",
|
||||||
|
@ -201857,6 +201917,42 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"quirks/body-fills-html-quirk-float.html": [
|
||||||
|
[
|
||||||
|
"quirks/body-fills-html-quirk-float.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/quirks/body-fills-html-quirk-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"quirks/body-fills-html-quirk-inline.html": [
|
||||||
|
[
|
||||||
|
"quirks/body-fills-html-quirk-inline.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/quirks/body-fills-html-quirk-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"quirks/body-fills-html-quirk-positioned.html": [
|
||||||
|
[
|
||||||
|
"quirks/body-fills-html-quirk-positioned.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/quirks/body-fills-html-quirk-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"quirks/historical/list-item-bullet-size.html": [
|
"quirks/historical/list-item-bullet-size.html": [
|
||||||
[
|
[
|
||||||
"quirks/historical/list-item-bullet-size.html",
|
"quirks/historical/list-item-bullet-size.html",
|
||||||
|
@ -201905,6 +202001,18 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"quirks/table-cell-width-calculation-abspos.html": [
|
||||||
|
[
|
||||||
|
"quirks/table-cell-width-calculation-abspos.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/quirks/reference/table-cell-width-calculation-abspos-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"quirks/text-decoration-doesnt-propagate-into-tables/quirks.html": [
|
"quirks/text-decoration-doesnt-propagate-into-tables/quirks.html": [
|
||||||
[
|
[
|
||||||
"quirks/text-decoration-doesnt-propagate-into-tables/quirks.html",
|
"quirks/text-decoration-doesnt-propagate-into-tables/quirks.html",
|
||||||
|
@ -233980,6 +234088,9 @@
|
||||||
"css/CSS2/positioning/abspos-inline-007-ref.xht": [
|
"css/CSS2/positioning/abspos-inline-007-ref.xht": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"css/CSS2/positioning/abspos-negative-margin-001-ref.html": [
|
||||||
|
[]
|
||||||
|
],
|
||||||
"css/CSS2/positioning/abspos-overflow-001-ref.xht": [
|
"css/CSS2/positioning/abspos-overflow-001-ref.xht": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
@ -248050,6 +248161,9 @@
|
||||||
"css/css-lists/add-inline-child-after-marker-001-ref.html": [
|
"css/css-lists/add-inline-child-after-marker-001-ref.html": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"css/css-lists/change-list-style-type-ref.html": [
|
||||||
|
[]
|
||||||
|
],
|
||||||
"css/css-lists/content-property/marker-text-matches-armenian-ref.html": [
|
"css/css-lists/content-property/marker-text-matches-armenian-ref.html": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
@ -270760,6 +270874,15 @@
|
||||||
"mathml/presentation-markup/operators/mo-form-ref.html": [
|
"mathml/presentation-markup/operators/mo-form-ref.html": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"mathml/presentation-markup/operators/mo-movablelimits-default-ref.html": [
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"mathml/presentation-markup/operators/mo-movablelimits-dynamic-ref.html": [
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"mathml/presentation-markup/operators/mo-movablelimits-ref.html": [
|
||||||
|
[]
|
||||||
|
],
|
||||||
"mathml/presentation-markup/operators/mo-paint-lspace-rspace-ref.html": [
|
"mathml/presentation-markup/operators/mo-paint-lspace-rspace-ref.html": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
@ -270781,6 +270904,9 @@
|
||||||
"mathml/relations/css-styling/lengths-1-ref.html": [
|
"mathml/relations/css-styling/lengths-1-ref.html": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"mathml/relations/css-styling/mathsize-attribute-ref.html": [
|
||||||
|
[]
|
||||||
|
],
|
||||||
"mathml/relations/css-styling/mathvariant-bold-fraktur-ref.html": [
|
"mathml/relations/css-styling/mathvariant-bold-fraktur-ref.html": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
@ -272485,6 +272611,9 @@
|
||||||
"quirks/META.yml": [
|
"quirks/META.yml": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"quirks/body-fills-html-quirk-ref.html": [
|
||||||
|
[]
|
||||||
|
],
|
||||||
"quirks/hashless-hex-color/support/common.js": [
|
"quirks/hashless-hex-color/support/common.js": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
@ -272500,6 +272629,9 @@
|
||||||
"quirks/reference/green-100px-square-no-red.html": [
|
"quirks/reference/green-100px-square-no-red.html": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"quirks/reference/table-cell-width-calculation-abspos-ref.html": [
|
||||||
|
[]
|
||||||
|
],
|
||||||
"quirks/support/test-ref-iframe.js": [
|
"quirks/support/test-ref-iframe.js": [
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
@ -312768,6 +312900,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-position/position-absolute-chrome-bug-002.html": [
|
||||||
|
[
|
||||||
|
"css/css-position/position-absolute-chrome-bug-002.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-position/position-absolute-container-dynamic-002.html": [
|
"css/css-position/position-absolute-container-dynamic-002.html": [
|
||||||
[
|
[
|
||||||
"css/css-position/position-absolute-container-dynamic-002.html",
|
"css/css-position/position-absolute-container-dynamic-002.html",
|
||||||
|
@ -316812,6 +316950,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-text/white-space/append-whitespace-only-node-crash-001.html": [
|
||||||
|
[
|
||||||
|
"css/css-text/white-space/append-whitespace-only-node-crash-001.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-text/white-space/nowrap-wbr-and-space-crash.html": [
|
"css/css-text/white-space/nowrap-wbr-and-space-crash.html": [
|
||||||
[
|
[
|
||||||
"css/css-text/white-space/nowrap-wbr-and-space-crash.html",
|
"css/css-text/white-space/nowrap-wbr-and-space-crash.html",
|
||||||
|
@ -320936,6 +321080,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/cssom-view/elementFromPoint-subpixel.html": [
|
||||||
|
[
|
||||||
|
"css/cssom-view/elementFromPoint-subpixel.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/cssom-view/elementFromPoint.html": [
|
"css/cssom-view/elementFromPoint.html": [
|
||||||
[
|
[
|
||||||
"css/cssom-view/elementFromPoint.html",
|
"css/cssom-view/elementFromPoint.html",
|
||||||
|
@ -321694,6 +321844,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/cssom/cssstyledeclaration-setter-form-controls.html": [
|
||||||
|
[
|
||||||
|
"css/cssom/cssstyledeclaration-setter-form-controls.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/cssom/cssstyledeclaration-setter-logical.html": [
|
"css/cssom/cssstyledeclaration-setter-logical.html": [
|
||||||
[
|
[
|
||||||
"css/cssom/cssstyledeclaration-setter-logical.html",
|
"css/cssom/cssstyledeclaration-setter-logical.html",
|
||||||
|
@ -351264,6 +351420,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"html/semantics/scripting-1/the-script-element/module/inactive-context-import.html": [
|
||||||
|
[
|
||||||
|
"html/semantics/scripting-1/the-script-element/module/inactive-context-import.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html": [
|
"html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html": [
|
||||||
[
|
[
|
||||||
"html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html",
|
"html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html",
|
||||||
|
@ -387178,30 +387340,6 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"sms/constructor.tentative.https.any.js": [
|
|
||||||
[
|
|
||||||
"sms/constructor.tentative.https.any.html",
|
|
||||||
{
|
|
||||||
"script_metadata": [
|
|
||||||
[
|
|
||||||
"title",
|
|
||||||
"SMS Receiver API: Constructor"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"sms/constructor.tentative.https.any.worker.html",
|
|
||||||
{
|
|
||||||
"script_metadata": [
|
|
||||||
[
|
|
||||||
"title",
|
|
||||||
"SMS Receiver API: Constructor"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"sms/idlharness.https.any.js": [
|
"sms/idlharness.https.any.js": [
|
||||||
[
|
[
|
||||||
"sms/idlharness.https.any.html",
|
"sms/idlharness.https.any.html",
|
||||||
|
@ -429381,6 +429519,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-lists/change-list-style-type.html": [
|
||||||
|
[
|
||||||
|
"css/css-lists/change-list-style-type.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-lists/list-style-type-armenian-002.xht": [
|
"css/css-lists/list-style-type-armenian-002.xht": [
|
||||||
[
|
[
|
||||||
"css/css-lists/list-style-type-armenian-002.xht",
|
"css/css-lists/list-style-type-armenian-002.xht",
|
||||||
|
@ -502970,6 +503114,14 @@
|
||||||
"9233b4373e5e4dc5beb6713a9af1de861c5cf4d9",
|
"9233b4373e5e4dc5beb6713a9af1de861c5cf4d9",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
|
"css/CSS2/positioning/abspos-negative-margin-001-ref.html": [
|
||||||
|
"e6f9bd6f9ad302edca80f34b70ebfcaf1d22e68c",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"css/CSS2/positioning/abspos-negative-margin-001.html": [
|
||||||
|
"6b6246eb195d102e23b8d4c7a9407235b6cc14c1",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
"css/CSS2/positioning/abspos-overflow-001-ref.xht": [
|
"css/CSS2/positioning/abspos-overflow-001-ref.xht": [
|
||||||
"ba7e87c6a7c18a9335b51e07052ab47631299c9b",
|
"ba7e87c6a7c18a9335b51e07052ab47631299c9b",
|
||||||
"support"
|
"support"
|
||||||
|
@ -550914,6 +551066,14 @@
|
||||||
"228604ee357d22027c1691bf2baf27a52729222b",
|
"228604ee357d22027c1691bf2baf27a52729222b",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
|
"css/css-lists/change-list-style-type-ref.html": [
|
||||||
|
"033af1333132a2696d1a80ceacfc91f1ebf67a08",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"css/css-lists/change-list-style-type.html": [
|
||||||
|
"3d68ca4a7eaa0fe9bbc94c94fa290ce6026272c6",
|
||||||
|
"visual"
|
||||||
|
],
|
||||||
"css/css-lists/content-property/marker-text-matches-armenian-ref.html": [
|
"css/css-lists/content-property/marker-text-matches-armenian-ref.html": [
|
||||||
"f21dfff69608a6a1201bd586c2a6e1e24d5fd915",
|
"f21dfff69608a6a1201bd586c2a6e1e24d5fd915",
|
||||||
"support"
|
"support"
|
||||||
|
@ -555562,6 +555722,10 @@
|
||||||
"3e8899a94099983b147f0877a6d45a17341a0364",
|
"3e8899a94099983b147f0877a6d45a17341a0364",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"css/css-position/position-absolute-chrome-bug-002.html": [
|
||||||
|
"5fef5205f94576cc4834f98a2cb1f2007df94974",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"css/css-position/position-absolute-container-dynamic-002.html": [
|
"css/css-position/position-absolute-container-dynamic-002.html": [
|
||||||
"91d862835e6d1351deefb26f7e2b71a9539bbd6c",
|
"91d862835e6d1351deefb26f7e2b71a9539bbd6c",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -567790,6 +567954,10 @@
|
||||||
"9d6b2c2bc7d0cde02d992f741884bf702c0398a4",
|
"9d6b2c2bc7d0cde02d992f741884bf702c0398a4",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
|
"css/css-text/white-space/append-whitespace-only-node-crash-001.html": [
|
||||||
|
"b32555b18876898beb1b3b7b4559268d64ae9c1c",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"css/css-text/white-space/break-spaces-001.html": [
|
"css/css-text/white-space/break-spaces-001.html": [
|
||||||
"f3b881afc1074db7511acbc419e5083ebde3413e",
|
"f3b881afc1074db7511acbc419e5083ebde3413e",
|
||||||
"reftest"
|
"reftest"
|
||||||
|
@ -587270,6 +587438,10 @@
|
||||||
"899e411bdd302f2995a9d337ac5a3f89bd1c709b",
|
"899e411bdd302f2995a9d337ac5a3f89bd1c709b",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"css/cssom-view/elementFromPoint-subpixel.html": [
|
||||||
|
"ff67aa2e7f32aa56cc316a11302882caccfe69b6",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"css/cssom-view/elementFromPoint.html": [
|
"css/cssom-view/elementFromPoint.html": [
|
||||||
"466fb5cb0a004e35cd74638a5187b01da9ca0a4d",
|
"466fb5cb0a004e35cd74638a5187b01da9ca0a4d",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -588010,6 +588182,10 @@
|
||||||
"e66466e7a11b7883f9ad9de84d9cedc27ac3ea61",
|
"e66466e7a11b7883f9ad9de84d9cedc27ac3ea61",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"css/cssom/cssstyledeclaration-setter-form-controls.html": [
|
||||||
|
"ae556ed1cbec68c757188518e2cf6cd4ebd5cd05",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"css/cssom/cssstyledeclaration-setter-logical.html": [
|
"css/cssom/cssstyledeclaration-setter-logical.html": [
|
||||||
"13d68e9a70229861dc1109972caa541147adb859",
|
"13d68e9a70229861dc1109972caa541147adb859",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -602143,7 +602319,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"docs/writing-tests/index.md": [
|
"docs/writing-tests/index.md": [
|
||||||
"20292fd33a3db279316355f8b5012070d41bc3b7",
|
"9680a359b27197f4acc8c08a786ddb1823b90a7a",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"docs/writing-tests/lint-tool.md": [
|
"docs/writing-tests/lint-tool.md": [
|
||||||
|
@ -604587,7 +604763,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"element-timing/background-image-multiple-elements.html": [
|
"element-timing/background-image-multiple-elements.html": [
|
||||||
"24f72a67c34d0cc5323c6d4a0acb2e25085ec87a",
|
"084bb9ca0205815a1c7ad7764ce1979485e88435",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"element-timing/background-image-stretched.html": [
|
"element-timing/background-image-stretched.html": [
|
||||||
|
@ -604687,7 +604863,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"element-timing/observe-text.html": [
|
"element-timing/observe-text.html": [
|
||||||
"a9a0e30adf353f342ad8bb6a2300ea90beb5d9fa",
|
"16382edaa9da45c246f34443ce3e70b7177f9203",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"element-timing/observe-video-poster.html": [
|
"element-timing/observe-video-poster.html": [
|
||||||
|
@ -627102,6 +627278,10 @@
|
||||||
"ca6900744dcf3a07d98ddaa17b4173fd4bed5fb9",
|
"ca6900744dcf3a07d98ddaa17b4173fd4bed5fb9",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"html/semantics/scripting-1/the-script-element/module/inactive-context-import.html": [
|
||||||
|
"ce88c0a1528613e6586f2188e583d44d5c89fe67",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html": [
|
"html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html": [
|
||||||
"db03612e82b42b6bd3294ced7468bb6c8b702520",
|
"db03612e82b42b6bd3294ced7468bb6c8b702520",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -631867,7 +632047,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"interfaces/webxr.idl": [
|
"interfaces/webxr.idl": [
|
||||||
"f9bfdce58425350d1404c4beaac719e04c94a498",
|
"4af1c96a1847445c7559dabba20cb8a3a1de5c60",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"interfaces/worklets.idl": [
|
"interfaces/worklets.idl": [
|
||||||
|
@ -632391,7 +632571,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"lint.whitelist": [
|
"lint.whitelist": [
|
||||||
"be52aa67c00b9484180e316d6594e31d4918087d",
|
"9966d7c307b5520ab251d69f231526df762dc4ba",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"loading/preloader-css-import-no-quote.tentative.html": [
|
"loading/preloader-css-import-no-quote.tentative.html": [
|
||||||
|
@ -632423,7 +632603,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"longtask-timing/idlharness.window.js": [
|
"longtask-timing/idlharness.window.js": [
|
||||||
"96d939f04e7fbba348bf1edccf64c17c7af0535d",
|
"0ef7e85440ee1fc99c05ef5be0fc1fe61f818118",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"longtask-timing/longtask-attributes.html": [
|
"longtask-timing/longtask-attributes.html": [
|
||||||
|
@ -632738,6 +632918,30 @@
|
||||||
"7c11c14691162b69c1a2e854734ae6ac37db10e2",
|
"7c11c14691162b69c1a2e854734ae6ac37db10e2",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
|
"mathml/presentation-markup/operators/mo-movablelimits-default-ref.html": [
|
||||||
|
"8328637397962e973130c6d8544bda90690cc471",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"mathml/presentation-markup/operators/mo-movablelimits-default.html": [
|
||||||
|
"cd01fe47682ff1be6a09551589875088476f22c4",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
|
"mathml/presentation-markup/operators/mo-movablelimits-dynamic-ref.html": [
|
||||||
|
"ee5bce2ca82066424da481e8b6ecebd80c4a2e19",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"mathml/presentation-markup/operators/mo-movablelimits-dynamic.html": [
|
||||||
|
"a92c6c01dc9da3aed4012843eb156b36f877d050",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
|
"mathml/presentation-markup/operators/mo-movablelimits-ref.html": [
|
||||||
|
"cb868d2400e8b8e536e3103a06a5d4502b1dbfba",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"mathml/presentation-markup/operators/mo-movablelimits.html": [
|
||||||
|
"0855594100b2b5cac13fb464108bf130288c0e32",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
"mathml/presentation-markup/operators/mo-paint-lspace-rspace-ref.html": [
|
"mathml/presentation-markup/operators/mo-paint-lspace-rspace-ref.html": [
|
||||||
"da0b79ff9a67cbe53daeb141aaa2efd4f2eb96ad",
|
"da0b79ff9a67cbe53daeb141aaa2efd4f2eb96ad",
|
||||||
"support"
|
"support"
|
||||||
|
@ -632862,6 +633066,14 @@
|
||||||
"aa38e9729de8569151b98307395ec8a2a5fe4b7f",
|
"aa38e9729de8569151b98307395ec8a2a5fe4b7f",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"mathml/relations/css-styling/mathsize-attribute-ref.html": [
|
||||||
|
"7a0450e51edf24d52a09b1ea4463483d7704bb75",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"mathml/relations/css-styling/mathsize-attribute.html": [
|
||||||
|
"00d12e4839cb91e5294409af03d3ad3847eb4213",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
"mathml/relations/css-styling/mathvariant-bold-fraktur-ref.html": [
|
"mathml/relations/css-styling/mathvariant-bold-fraktur-ref.html": [
|
||||||
"b883b12b57dbc99c0049ba98c8d3574524c42505",
|
"b883b12b57dbc99c0049ba98c8d3574524c42505",
|
||||||
"support"
|
"support"
|
||||||
|
@ -646002,6 +646214,22 @@
|
||||||
"608a7c15c7996b5ed3cf534379417c3c077c4e82",
|
"608a7c15c7996b5ed3cf534379417c3c077c4e82",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"quirks/body-fills-html-quirk-float.html": [
|
||||||
|
"19438bc1bf35b2c4fe674ccaabb7ef32331c50a1",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
|
"quirks/body-fills-html-quirk-inline.html": [
|
||||||
|
"4f15bb97c94219e566ad3c992ad37894f9d40e62",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
|
"quirks/body-fills-html-quirk-positioned.html": [
|
||||||
|
"3ce416dd95cbc288318079c70890f5febc59a174",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
|
"quirks/body-fills-html-quirk-ref.html": [
|
||||||
|
"180afbb84f8444aa4d83342e5679dfda26754acb",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"quirks/classname-query-after-sibling-adoption.html": [
|
"quirks/classname-query-after-sibling-adoption.html": [
|
||||||
"0fcad36776d5a7fe160244dc342f227b76083798",
|
"0fcad36776d5a7fe160244dc342f227b76083798",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -646062,6 +646290,10 @@
|
||||||
"159d9a52a01a0b328680a530603cb496ab2d5fcf",
|
"159d9a52a01a0b328680a530603cb496ab2d5fcf",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"quirks/reference/table-cell-width-calculation-abspos-ref.html": [
|
||||||
|
"3d365d25ad669f145a7e2ef5e4e6d0552713546a",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"quirks/support/test-ref-iframe.js": [
|
"quirks/support/test-ref-iframe.js": [
|
||||||
"e5df41d4249bc93b7458774524bf90f0a6f36be7",
|
"e5df41d4249bc93b7458774524bf90f0a6f36be7",
|
||||||
"support"
|
"support"
|
||||||
|
@ -646074,6 +646306,10 @@
|
||||||
"2ff00b9ee794c07309c05f2500b4be1b326afd7e",
|
"2ff00b9ee794c07309c05f2500b4be1b326afd7e",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"quirks/table-cell-width-calculation-abspos.html": [
|
||||||
|
"f26d06040775c8e2447ade4230fcf28ec06dee3b",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
"quirks/table-cell-width-calculation.html": [
|
"quirks/table-cell-width-calculation.html": [
|
||||||
"eeb726627b78fdcbf81d3c29b9205f771bd0aca8",
|
"eeb726627b78fdcbf81d3c29b9205f771bd0aca8",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -661806,20 +662042,16 @@
|
||||||
"43b340dbb79f2585ef4acc4361ee94c6f22003f0",
|
"43b340dbb79f2585ef4acc4361ee94c6f22003f0",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"sms/constructor.tentative.https.any.js": [
|
|
||||||
"a624934ceeeace186038b15332d1c3c73968fbc7",
|
|
||||||
"testharness"
|
|
||||||
],
|
|
||||||
"sms/idlharness.https.any.js": [
|
"sms/idlharness.https.any.js": [
|
||||||
"c030a5073a0a376a1b337e563c955f78bdad41dc",
|
"0c31744937c6dbc9b292586ab8ce5f10b268f3ed",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"sms/interceptor.https.html": [
|
"sms/interceptor.https.html": [
|
||||||
"417120a12174859110f48a99a11405b7f2c0316e",
|
"4a6772f4416ab0550e451c710da1b48bbd9303d6",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"sms/resources/iframe.html": [
|
"sms/resources/iframe.html": [
|
||||||
"44410e805f7b2857809794f582a97df0d1b0ac14",
|
"9a00e84c63b9321d9e29c10aeb266ff5c0b1d5e1",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"sms/sms-top-level-frame-only.https.html": [
|
"sms/sms-top-level-frame-only.https.html": [
|
||||||
|
@ -661827,11 +662059,11 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"sms/sms_provider.js": [
|
"sms/sms_provider.js": [
|
||||||
"dd3af9b747a3207d02c596b4fb6434772f3c44e3",
|
"a4759419a88670ec6e3f1cbd4ac3dcb3500ad57a",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"sms/sms_receiver.idl": [
|
"sms/sms_receiver.idl": [
|
||||||
"bc6fb1dc1037fc263a5a2da35d03449fee4db48b",
|
"b71b6a3e0db2b74b127e4332cd83f218bb39d6aa",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"speech-api/META.yml": [
|
"speech-api/META.yml": [
|
||||||
|
@ -666655,7 +666887,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/ci/website_build.sh": [
|
"tools/ci/website_build.sh": [
|
||||||
"f91975719be21e7c1461e4f8603c4f34639b840f",
|
"aadfcbd6a212574fa5462447072b996ae214de6b",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/conftest.py": [
|
"tools/conftest.py": [
|
||||||
|
@ -675463,7 +675695,7 @@
|
||||||
"manual"
|
"manual"
|
||||||
],
|
],
|
||||||
"web-nfc/NFCReadingEvent_constructor.https.html": [
|
"web-nfc/NFCReadingEvent_constructor.https.html": [
|
||||||
"460e92b2508ba438a058d5ce9ab34db0d24349cf",
|
"da3e4c071d1e48a43be5ee27d775721d2af88e07",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"web-nfc/NFCWriter_push.https.html": [
|
"web-nfc/NFCWriter_push.https.html": [
|
||||||
|
@ -678423,7 +678655,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webrtc/RTCPeerConnection-helper.js": [
|
"webrtc/RTCPeerConnection-helper.js": [
|
||||||
"d859ac736ae6bf0187640dbe2148d8e0d64d9345",
|
"6a4ce854db70573a368ced9889e0623b15311f72",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html": [
|
"webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html": [
|
||||||
|
@ -678431,7 +678663,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webrtc/RTCPeerConnection-iceConnectionState.https.html": [
|
"webrtc/RTCPeerConnection-iceConnectionState.https.html": [
|
||||||
"6d4ab50b0e266c30d6ce329e1f587886f33ae5fb",
|
"385bb51719e6ee5049f700f783d0faa6753cdff7",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webrtc/RTCPeerConnection-iceGatheringState.html": [
|
"webrtc/RTCPeerConnection-iceGatheringState.html": [
|
||||||
|
@ -678719,7 +678951,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"webrtc/protocol/candidate-exchange.https.html": [
|
"webrtc/protocol/candidate-exchange.https.html": [
|
||||||
"2603a02cddf3f026b09b8a233d17ff3f92bd43a1",
|
"d1bc35819cee8e13485765e6f70836521dc5e7e7",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webrtc/protocol/dtls-fingerprint-validation.html": [
|
"webrtc/protocol/dtls-fingerprint-validation.html": [
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[abspos-negative-margin-001.html]
|
||||||
|
expected: FAIL
|
|
@ -74,3 +74,6 @@
|
||||||
[opacity end]
|
[opacity end]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[outline-width end]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[elementFromPoint-subpixel.html]
|
||||||
|
[Hit test top left corner of box]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[matchMedia-display-none-iframe.html]
|
||||||
|
expected: ERROR
|
|
@ -2,6 +2,7 @@
|
||||||
type: testharness
|
type: testharness
|
||||||
|
|
||||||
[single-byte-decoder.html?document]
|
[single-byte-decoder.html?document]
|
||||||
|
expected: TIMEOUT
|
||||||
[ISO-8859-4: iso_8859-4:1988 (document.characterSet and document.inputEncoding)]
|
[ISO-8859-4: iso_8859-4:1988 (document.characterSet and document.inputEncoding)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -309,15 +309,9 @@
|
||||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html */*]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/plain;charset=gbk text/html]
|
[<iframe>: separate response Content-Type: text/plain;charset=gbk text/html]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -330,3 +324,9 @@
|
||||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -38,9 +38,6 @@
|
||||||
[combined text/javascript;charset=windows-1252 x/x text/javascript]
|
[combined text/javascript;charset=windows-1252 x/x text/javascript]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[separate text/javascript;charset=windows-1252 text/javascript]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[separate x/x;" x/y;\\" text/javascript;charset=windows-1252;" text/javascript]
|
[separate x/x;" x/y;\\" text/javascript;charset=windows-1252;" text/javascript]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,6 @@
|
||||||
[X-Content-Type-Options%3A%20nosniff%0C]
|
[X-Content-Type-Options%3A%20nosniff%0C]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
|
[X-Content-Type-Options%3A%20%2Cnosniff]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Content-Type-Options%3A%20nosniff]
|
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[traverse_the_history_3.html]
|
|
||||||
[Multiple history traversals, last would be aborted]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,24 +1,5 @@
|
||||||
[open-features-negative-innerwidth-innerheight.html]
|
[open-features-negative-innerwidth-innerheight.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
|
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=-404.5" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "innerwidth=-404.5" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "innerwidth=-404" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "innerheight=-404e1" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "innerheight=-404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "innerwidth=-404e1" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,5 @@
|
||||||
[open-features-negative-screenx-screeny.html]
|
[open-features-negative-screenx-screeny.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: negative values for legacy `screenx`, `screeny`]
|
[HTML: window.open `features`: negative values for legacy `screenx`, `screeny`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=-204" should NOT set "left=204"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "screeny=-204" should NOT set "top=204"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "screeny=-204.5" should NOT set "top=204"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "screeny=-0" should NOT set "top=204"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "screenx=-0" should NOT set "left=204"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "screenx=-204.5" should NOT set "left=204"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,5 @@
|
||||||
[open-features-negative-top-left.html]
|
[open-features-negative-top-left.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: negative values for `top`, `left`]
|
[HTML: window.open `features`: negative values for `top`, `left`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "top=-204" should NOT set "top=204"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "top=-204.5" should NOT set "top=204"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "left=-204" should NOT set "left=204"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "top=-0" should NOT set "top=204"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "left=-204.5" should NOT set "left=204"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "left=-0" should NOT set "left=204"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,5 @@
|
||||||
[open-features-negative-width-height.html]
|
[open-features-negative-width-height.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: negative values for `width`, `height`]
|
[HTML: window.open `features`: negative values for `width`, `height`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=-404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "height=-404e1" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "height=-404.5" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "width=-404" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "width=-404e1" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "width=-404.5" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,48 +1,32 @@
|
||||||
[open-features-non-integer-height.html]
|
[open-features-non-integer-height.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: non-integer values for feature `height`]
|
[HTML: window.open `features`: non-integer values for feature `height`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405*3" should set "height=405"]
|
[features "height=405*3" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405.32" should set "height=405"]
|
[features "height=405.32" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405e1" should set "height=405"]
|
[features "height=405e1" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405/5" should set "height=405"]
|
[features "height=405/5" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405^4" should set "height=405"]
|
[features "height=405^4" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405.5" should set "height=405"]
|
[features "height=405.5" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405e-1" should set "height=405"]
|
[features "height=405e-1" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405 " should set "height=405"]
|
[features "height=405 " should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405LLl" should set "height=405"]
|
[features "height=405LLl" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=/404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[top=0,left=0,width=401,: absence of feature "height" should be treated same as "height=0"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[top=0,left=0: absence of feature "height" should be treated same as "height=0"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "height=_404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "height=L404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,42 +1,32 @@
|
||||||
[open-features-non-integer-innerheight.html]
|
[open-features-non-integer-innerheight.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
|
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405e-1" should set "height=405"]
|
[features "innerheight=405e-1" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405LLl" should set "height=405"]
|
[features "innerheight=405LLl" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405^4" should set "height=405"]
|
[features "innerheight=405^4" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405e1" should set "height=405"]
|
[features "innerheight=405e1" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405 " should set "height=405"]
|
[features "innerheight=405 " should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405/5" should set "height=405"]
|
[features "innerheight=405/5" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405.32" should set "height=405"]
|
[features "innerheight=405.32" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405.5" should set "height=405"]
|
[features "innerheight=405.5" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405*3" should set "height=405"]
|
[features "innerheight=405*3" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=_404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "innerheight=L404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "innerheight=/404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,42 +1,32 @@
|
||||||
[open-features-non-integer-innerwidth.html]
|
[open-features-non-integer-innerwidth.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: non-integer values for legacy feature `innerwidth`]
|
[HTML: window.open `features`: non-integer values for legacy feature `innerwidth`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerwidth=405e-1" should set "width=405"]
|
[features "innerwidth=405e-1" should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerwidth=405*3" should set "width=405"]
|
[features "innerwidth=405*3" should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerwidth=405.5" should set "width=405"]
|
[features "innerwidth=405.5" should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerwidth=405e1" should set "width=405"]
|
[features "innerwidth=405e1" should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerwidth=405.32" should set "width=405"]
|
[features "innerwidth=405.32" should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerwidth=405 " should set "width=405"]
|
[features "innerwidth=405 " should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerwidth=405LLl" should set "width=405"]
|
[features "innerwidth=405LLl" should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerwidth=405/5" should set "width=405"]
|
[features "innerwidth=405/5" should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerwidth=405^4" should set "width=405"]
|
[features "innerwidth=405^4" should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerwidth=/404" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "innerwidth=_404" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "innerwidth=L404" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,42 +1,32 @@
|
||||||
[open-features-non-integer-left.html]
|
[open-features-non-integer-left.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: non-integer values for feature `left`]
|
[HTML: window.open `features`: non-integer values for feature `left`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105e1" should set "left=105"]
|
[features "left=105e1" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105 " should set "left=105"]
|
[features "left=105 " should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105/5" should set "left=105"]
|
[features "left=105/5" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105e-1" should set "left=105"]
|
[features "left=105e-1" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105^4" should set "left=105"]
|
[features "left=105^4" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105LLl" should set "left=105"]
|
[features "left=105LLl" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105.32" should set "left=105"]
|
[features "left=105.32" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105*3" should set "left=105"]
|
[features "left=105*3" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105.5" should set "left=105"]
|
[features "left=105.5" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=L104" should NOT set "left=104"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "left=/104" should NOT set "left=104"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "left=_104" should NOT set "left=104"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,42 +1,32 @@
|
||||||
[open-features-non-integer-screenx.html]
|
[open-features-non-integer-screenx.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: non-integer values for legacy feature `screenx`]
|
[HTML: window.open `features`: non-integer values for legacy feature `screenx`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105.5" should set "left=105"]
|
[features "screenx=105.5" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105e1" should set "left=105"]
|
[features "screenx=105e1" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105 " should set "left=105"]
|
[features "screenx=105 " should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105*3" should set "left=105"]
|
[features "screenx=105*3" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105e-1" should set "left=105"]
|
[features "screenx=105e-1" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105^4" should set "left=105"]
|
[features "screenx=105^4" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105LLl" should set "left=105"]
|
[features "screenx=105LLl" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105/5" should set "left=105"]
|
[features "screenx=105/5" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105.32" should set "left=105"]
|
[features "screenx=105.32" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=_104" should NOT set "left=104"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "screenx=L104" should NOT set "left=104"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "screenx=/104" should NOT set "left=104"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,42 +1,32 @@
|
||||||
[open-features-non-integer-screeny.html]
|
[open-features-non-integer-screeny.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: non-integer values for legacy feature `screeny`]
|
[HTML: window.open `features`: non-integer values for legacy feature `screeny`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405^4" should set "height=405"]
|
[features "screeny=405^4" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405e-1" should set "height=405"]
|
[features "screeny=405e-1" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405LLl" should set "height=405"]
|
[features "screeny=405LLl" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405e1" should set "height=405"]
|
[features "screeny=405e1" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405 " should set "height=405"]
|
[features "screeny=405 " should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405/5" should set "height=405"]
|
[features "screeny=405/5" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405*3" should set "height=405"]
|
[features "screeny=405*3" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405.32" should set "height=405"]
|
[features "screeny=405.32" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405.5" should set "height=405"]
|
[features "screeny=405.5" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=_404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "screeny=L404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "screeny=/404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,48 +1,32 @@
|
||||||
[open-features-non-integer-width.html]
|
[open-features-non-integer-width.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: non-integer values for feature `width`]
|
[HTML: window.open `features`: non-integer values for feature `width`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "width=405^4" should set "width=405"]
|
[features "width=405^4" should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "width=405.5" should set "width=405"]
|
[features "width=405.5" should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "width=405e1" should set "width=405"]
|
[features "width=405e1" should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "width=405 " should set "width=405"]
|
[features "width=405 " should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "width=405.32" should set "width=405"]
|
[features "width=405.32" should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "width=405LLl" should set "width=405"]
|
[features "width=405LLl" should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "width=405*3" should set "width=405"]
|
[features "width=405*3" should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "width=405e-1" should set "width=405"]
|
[features "width=405e-1" should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "width=405/5" should set "width=405"]
|
[features "width=405/5" should set "width=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[top=0,left=0: absence of feature "width" should be treated same as "width=0"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "width=_404" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[top=0,left=0,height=401,: absence of feature "width" should be treated same as "width=0"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "width=/404" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "width=L404" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
[non-active-document.html]
|
|
||||||
[DOMParser]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createHTMLDocument]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<template>]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[realtimeanalyser-fft-scaling.html]
|
[realtimeanalyser-fft-scaling.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -40,3 +40,7 @@
|
||||||
|
|
||||||
[test_height_width_larger_than_max]
|
[test_height_width_larger_than_max]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[test_negative_x_y]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
font-size: 10px;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
.blue {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: bottom;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background: blue;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<body>
|
||||||
|
<div>x<span class="blue"></span></div>
|
||||||
|
<div>x<br><span class="blue"></span></div>
|
||||||
|
</body>
|
|
@ -0,0 +1,33 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>CSS Test: Absolutely positioned object in a negative margin box</title>
|
||||||
|
<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
|
||||||
|
<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#comp-abspos">
|
||||||
|
<link rel="match" href="abspos-negative-margin-001-ref.html">
|
||||||
|
<style>
|
||||||
|
html {
|
||||||
|
font-size: 10px;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
.abspos {
|
||||||
|
position:absolute;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background: blue;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<body>
|
||||||
|
<div>
|
||||||
|
<span>
|
||||||
|
<span style="margin-right: -10px;">
|
||||||
|
x<span class="abspos"></span>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>
|
||||||
|
<span style="margin-right: -10px;">
|
||||||
|
x<div class="abspos"></div>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</body>
|
|
@ -0,0 +1,45 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Lists: test the change of list-style-type</title>
|
||||||
|
<link rel=help href="https://www.w3.org/TR/CSS22/generate.html#lists">
|
||||||
|
<link rel=help href="https://bugs.chromium.org/p/chromium/issues/detail?id=966750">
|
||||||
|
<style type="text/css">
|
||||||
|
.inside {
|
||||||
|
list-style-position: inside;
|
||||||
|
}
|
||||||
|
|
||||||
|
.none2symbol {
|
||||||
|
list-style-type: square;
|
||||||
|
}
|
||||||
|
|
||||||
|
.symbol2none {
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.symbol2symbol {
|
||||||
|
list-style-type: square;
|
||||||
|
}
|
||||||
|
|
||||||
|
.symbol2ordinal {
|
||||||
|
list-style-type: upper-roman;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ordinal2ordinal {
|
||||||
|
list-style-type: decimal;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<ul class="inside"><li class="none2symbol">inside: none to square</li></ul>
|
||||||
|
<ul><li class="none2symbol">outside: none to square</li></ul>
|
||||||
|
|
||||||
|
<ul class="inside"><li class="symbol2none">inside: square to none</li></ul>
|
||||||
|
<ul><li class="symbol2none">outside: square to none</li></ul>
|
||||||
|
|
||||||
|
<ul class="inside"><li class="symbol2symbol">inside: disc to square</li></ul>
|
||||||
|
<ul><li class="symbol2symbol">outside: disc to square</li></ul>
|
||||||
|
|
||||||
|
<ul class="inside"><li class="symbol2ordinal">inside: disc to upper-roman</li></ul>
|
||||||
|
<ul><li class="symbol2ordinal">outside: disc to upper-roman</li></ul>
|
||||||
|
|
||||||
|
<ul class="inside"><li class="ordinal2ordinal">inside: upper-roman to decimal</li></ul>
|
||||||
|
<ul><li class="ordinal2ordinal">outside: upper-roman to decimal</li></ul>
|
|
@ -0,0 +1,71 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Lists: test the change of list-style-type</title>
|
||||||
|
<link rel=help href="https://www.w3.org/TR/CSS22/generate.html#lists">
|
||||||
|
<link rel=help href="https://bugs.chromium.org/p/chromium/issues/detail?id=966750">
|
||||||
|
<style type="text/css">
|
||||||
|
.inside {
|
||||||
|
list-style-position: inside;
|
||||||
|
}
|
||||||
|
|
||||||
|
.none2symbol {
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.symbol2none {
|
||||||
|
list-style-type: square;
|
||||||
|
}
|
||||||
|
|
||||||
|
.symbol2symbol {
|
||||||
|
list-style-type: disc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.symbol2ordinal {
|
||||||
|
list-style-type: disc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ordinal2ordinal {
|
||||||
|
list-style-type: upper-roman;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<ul class="inside"><li class="none2symbol">inside: none to square</li></ul>
|
||||||
|
<ul><li class="none2symbol">outside: none to square</li></ul>
|
||||||
|
|
||||||
|
<ul class="inside"><li class="symbol2none">inside: square to none</li></ul>
|
||||||
|
<ul><li class="symbol2none">outside: square to none</li></ul>
|
||||||
|
|
||||||
|
<ul class="inside"><li class="symbol2symbol">inside: disc to square</li></ul>
|
||||||
|
<ul><li class="symbol2symbol">outside: disc to square</li></ul>
|
||||||
|
|
||||||
|
<ul class="inside"><li class="symbol2ordinal">inside: disc to upper-roman</li></ul>
|
||||||
|
<ul><li class="symbol2ordinal">outside: disc to upper-roman</li></ul>
|
||||||
|
|
||||||
|
<ul class="inside"><li class="ordinal2ordinal">inside: upper-roman to decimal</li></ul>
|
||||||
|
<ul><li class="ordinal2ordinal">outside: upper-roman to decimal</li></ul>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
document.body.offsetLeft;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
.none2symbol {
|
||||||
|
list-style-type: square;
|
||||||
|
}
|
||||||
|
|
||||||
|
.symbol2none {
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.symbol2symbol {
|
||||||
|
list-style-type: square;
|
||||||
|
}
|
||||||
|
|
||||||
|
.symbol2ordinal {
|
||||||
|
list-style-type: upper-roman;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ordinal2ordinal {
|
||||||
|
list-style-type: decimal;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,39 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<link rel="author" href="mailto:atotic@google.com">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<link rel="help" href="https://crbug.com/970166">
|
||||||
|
<meta name="assert" content="simplified layout calculates correct abspos position with floats">
|
||||||
|
<style>
|
||||||
|
|
||||||
|
#container {
|
||||||
|
position: relative;
|
||||||
|
background: gray;
|
||||||
|
}
|
||||||
|
#container::after {
|
||||||
|
content: '';
|
||||||
|
display: table;
|
||||||
|
clear:both;
|
||||||
|
}
|
||||||
|
#target {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
background: green;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div id="container">
|
||||||
|
<div style="float:left">floatleft</div>
|
||||||
|
<div id="target">
|
||||||
|
<div>text</div>
|
||||||
|
<div id="toggle">toggle</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
test(() => {
|
||||||
|
document.body.offsetTop;
|
||||||
|
let el = document.querySelector("#toggle");
|
||||||
|
el.style.display = "none";
|
||||||
|
document.body.offsetTop;
|
||||||
|
assert_equals(document.querySelector("#target").offsetTop, 0);
|
||||||
|
}, '#target position is recalculated correctly.');
|
||||||
|
</script>
|
|
@ -0,0 +1,36 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<link rel="help" href="https://crbug.com/971811">
|
||||||
|
<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<body>
|
||||||
|
<div id="log"></div>
|
||||||
|
<script>
|
||||||
|
const strings = [' ', '\t', '\n', '\f', '\r'];
|
||||||
|
const whitespace_values = ['normal', 'pre', 'nowrap', 'pre-wrap', 'break-spaces', 'pre-line'];
|
||||||
|
const container = document.body;
|
||||||
|
for (let whitespace_value of whitespace_values) {
|
||||||
|
for (let string of strings) {
|
||||||
|
test(() => {
|
||||||
|
let div = document.createElement('div');
|
||||||
|
div.style.whiteSpace = whitespace_value;
|
||||||
|
div.textContent = 'test';
|
||||||
|
container.appendChild(div);
|
||||||
|
container.offsetTop; // Force layout
|
||||||
|
div.appendChild(document.createTextNode(string));
|
||||||
|
container.offsetTop; // Force layout
|
||||||
|
}, `Append ${toCodePoints(string)} to 'white-space: ${whitespace_value}'`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function toCodePoints(string) {
|
||||||
|
let results = [];
|
||||||
|
for (let ch of string) {
|
||||||
|
let hex = ch.codePointAt(0).toString(16).toUpperCase();
|
||||||
|
hex = ('000' + hex).substr(-4)
|
||||||
|
results.push('U+' + hex);
|
||||||
|
}
|
||||||
|
return results.join(' ');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
|
@ -0,0 +1,59 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>CSSOM View - extensions to the Document interface</title>
|
||||||
|
<link rel="author" title="Xiaocheng Hu" href="mailto:xiaochengh@chromium.org">
|
||||||
|
<link rel="help" href="http://www.w3.org/TR/cssom-view/#extensions-to-the-document-interface">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<style>
|
||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
width: 500px;
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map {
|
||||||
|
flex: 1 1 auto;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.child {
|
||||||
|
width: 183.66px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<div class="map"></div>
|
||||||
|
<div class="box" id="box">
|
||||||
|
<div class="child"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const box = document.getElementById('box');
|
||||||
|
const rect = box.getBoundingClientRect();
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
assert_equals(document.elementFromPoint(rect.x, rect.y), box);
|
||||||
|
}, 'Hit test top left corner of box');
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
assert_equals(document.elementFromPoint(rect.x + rect.width - 1, rect.y), box);
|
||||||
|
}, 'Hit test top right corner of box');
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
assert_equals(document.elementFromPoint(rect.x, rect.y + rect.height - 1), box);
|
||||||
|
}, 'Hit test bottom left corner of box');
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
assert_equals(document.elementFromPoint(rect.x + rect.width - 1, rect.y + rect.height - 1), box);
|
||||||
|
}, 'Hit test lower left corner of box');
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,103 @@
|
||||||
|
<!doctype html>
|
||||||
|
<title>CSSOM test: no side effects from setting "height"</title>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setproperty">
|
||||||
|
<link rel="help" href="https://bugs.webkit.org/show_bug.cgi?id=107380">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Historically, the Apple Safari web browser has added an "intrinsic margin" to
|
||||||
|
form controls which do not specify a `height`. It removed this margin following
|
||||||
|
modification of the `height`. <a
|
||||||
|
href="https://bugs.webkit.org/show_bug.cgi?id=107380">This non-standard
|
||||||
|
behavior was identified as a source of confusion for web developers.</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function makeElement(tagName) {
|
||||||
|
var element = document.createElement(tagName);
|
||||||
|
document.body.appendChild(element);
|
||||||
|
return element;
|
||||||
|
}
|
||||||
|
function makeInputElement(type) {
|
||||||
|
var element = makeElement('input');
|
||||||
|
element.setAttribute('type', type);
|
||||||
|
return element;
|
||||||
|
}
|
||||||
|
function measure(element) {
|
||||||
|
var computed = getComputedStyle(element);
|
||||||
|
return [computed.marginTop, computed.marginBottom];
|
||||||
|
}
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var element = makeInputElement('text');
|
||||||
|
var initial = measure(element);
|
||||||
|
|
||||||
|
element.style.setProperty('height', '12px');
|
||||||
|
|
||||||
|
assert_array_equals(measure(element), initial);
|
||||||
|
}, 'text input element');
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var element = makeInputElement('button');
|
||||||
|
var initial = measure(element);
|
||||||
|
|
||||||
|
element.style.setProperty('height', '12px');
|
||||||
|
|
||||||
|
assert_array_equals(measure(element), initial);
|
||||||
|
}, 'button input element');
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var element = makeInputElement('submit');
|
||||||
|
var initial = measure(element);
|
||||||
|
|
||||||
|
element.style.setProperty('height', '12px');
|
||||||
|
|
||||||
|
assert_array_equals(measure(element), initial);
|
||||||
|
}, 'submit input element');
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var element = makeInputElement('radio');
|
||||||
|
var initial = measure(element);
|
||||||
|
|
||||||
|
element.style.setProperty('height', '12px');
|
||||||
|
|
||||||
|
assert_array_equals(measure(element), initial);
|
||||||
|
}, 'radio input element');
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var element = makeInputElement('checkbox');
|
||||||
|
var initial = measure(element);
|
||||||
|
|
||||||
|
element.style.setProperty('height', '12px');
|
||||||
|
|
||||||
|
assert_array_equals(measure(element), initial);
|
||||||
|
}, 'checkbox input element');
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var element = makeElement('textarea');
|
||||||
|
var initial = measure(element);
|
||||||
|
|
||||||
|
element.style.setProperty('height', '12px');
|
||||||
|
|
||||||
|
assert_array_equals(measure(element), initial);
|
||||||
|
}, 'textarea element');
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var element = makeElement('select');
|
||||||
|
var initial = measure(element);
|
||||||
|
|
||||||
|
element.style.setProperty('height', '12px');
|
||||||
|
|
||||||
|
assert_array_equals(measure(element), initial);
|
||||||
|
}, 'select element');
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var element = makeElement('button')
|
||||||
|
var initial = measure(element);
|
||||||
|
|
||||||
|
element.style.setProperty('height', '12px');
|
||||||
|
|
||||||
|
assert_array_equals(measure(element), initial);
|
||||||
|
}, 'button element');
|
||||||
|
</script>
|
|
@ -22,6 +22,8 @@ There's also a load of [general guidelines](general-guidelines) that apply to al
|
||||||
rendering
|
rendering
|
||||||
server-features
|
server-features
|
||||||
submission-process
|
submission-process
|
||||||
|
testdriver
|
||||||
|
testdriver-tutorial
|
||||||
testharness
|
testharness
|
||||||
visual
|
visual
|
||||||
wdspec
|
wdspec
|
||||||
|
|
|
@ -61,6 +61,8 @@ body {
|
||||||
observedDiv2Txt = true;
|
observedDiv2Txt = true;
|
||||||
checkTextElement(entry, 'et2', 'div2', beforeRender,
|
checkTextElement(entry, 'et2', 'div2', beforeRender,
|
||||||
document.getElementById('div2'));
|
document.getElementById('div2'));
|
||||||
|
assert_greater_than_equal(entry.intersectionRect.right - entry.intersectionRect.left, 50);
|
||||||
|
assert_greater_than_equal(entry.intersectionRect.bottom - entry.intersectionRect.top, 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -2,6 +2,14 @@
|
||||||
<meta charset=utf-8>
|
<meta charset=utf-8>
|
||||||
<title>Element Timing: observe text</title>
|
<title>Element Timing: observe text</title>
|
||||||
<body>
|
<body>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
margin: 20px;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="resources/element-timing-helpers.js"></script>
|
<script src="resources/element-timing-helpers.js"></script>
|
||||||
|
@ -15,7 +23,14 @@
|
||||||
const observer = new PerformanceObserver(
|
const observer = new PerformanceObserver(
|
||||||
t.step_func_done((entryList) => {
|
t.step_func_done((entryList) => {
|
||||||
assert_equals(entryList.getEntries().length, 1);
|
assert_equals(entryList.getEntries().length, 1);
|
||||||
checkTextElement(entryList.getEntries()[0], 'my_text', 'text_id', beforeRender, paragraph);
|
const entry = entryList.getEntries()[0];
|
||||||
|
checkTextElement(entry, 'my_text', 'text_id', beforeRender, paragraph);
|
||||||
|
assert_equals(entry.intersectionRect.left, 20);
|
||||||
|
// Text box size will vary from device to device, so try lower bounding height by 12, width by 100.
|
||||||
|
assert_greater_than_equal(entry.intersectionRect.right, 120);
|
||||||
|
|
||||||
|
assert_equals(entry.intersectionRect.top, 20);
|
||||||
|
assert_greater_than_equal(entry.intersectionRect.bottom, 32);
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
observer.observe({entryTypes: ['element']});
|
observer.observe({entryTypes: ['element']});
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Dynamic import triggered from inactive context should not crash</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
|
||||||
|
<div id="container">
|
||||||
|
<iframe></iframe>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
test(() => {
|
||||||
|
const iframe = document.querySelector('iframe');
|
||||||
|
const otherWindow = iframe.contentWindow;
|
||||||
|
iframe.remove();
|
||||||
|
|
||||||
|
// Below should not crash
|
||||||
|
otherWindow.eval(`import('foobar');`);
|
||||||
|
}, 'dynamic import from inactive context should not crash');
|
||||||
|
</script>
|
|
@ -203,8 +203,6 @@ dictionary XRWebGLLayerInit {
|
||||||
optional XRWebGLLayerInit layerInit)]
|
optional XRWebGLLayerInit layerInit)]
|
||||||
interface XRWebGLLayer {
|
interface XRWebGLLayer {
|
||||||
// Attributes
|
// Attributes
|
||||||
[SameObject] readonly attribute XRWebGLRenderingContext context;
|
|
||||||
|
|
||||||
readonly attribute boolean antialias;
|
readonly attribute boolean antialias;
|
||||||
readonly attribute boolean ignoreDepthValues;
|
readonly attribute boolean ignoreDepthValues;
|
||||||
|
|
||||||
|
|
|
@ -813,10 +813,6 @@ LAYOUTTESTS APIS: permissions/test-background-fetch-permission.html
|
||||||
LAYOUTTESTS APIS: resources/chromium/generic_sensor_mocks.js
|
LAYOUTTESTS APIS: resources/chromium/generic_sensor_mocks.js
|
||||||
LAYOUTTESTS APIS: resources/chromium/webxr-test.js
|
LAYOUTTESTS APIS: resources/chromium/webxr-test.js
|
||||||
|
|
||||||
# Gecko additons to remove
|
|
||||||
CSS-COLLIDING-REF-NAME: css/css-contain/reference/contain-size-fieldset-001-ref.html
|
|
||||||
CSS-COLLIDING-REF-NAME: css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001-ref.html
|
|
||||||
|
|
||||||
# Signed Exchange files have hard-coded URLs in the certUrl field
|
# Signed Exchange files have hard-coded URLs in the certUrl field
|
||||||
WEB-PLATFORM.TEST:signed-exchange/resources/*.sxg
|
WEB-PLATFORM.TEST:signed-exchange/resources/*.sxg
|
||||||
WEB-PLATFORM.TEST:signed-exchange/appcache/resources/*.sxg
|
WEB-PLATFORM.TEST:signed-exchange/appcache/resources/*.sxg
|
||||||
|
|
|
@ -1,51 +1,34 @@
|
||||||
// META: script=/resources/WebIDLParser.js
|
// META: script=/resources/WebIDLParser.js
|
||||||
// META: script=/resources/idlharness.js
|
// META: script=/resources/idlharness.js
|
||||||
|
|
||||||
// https://w3c.github.io/longtask-timing/
|
// https://w3c.github.io/longtasks/
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
promise_test(async t => {
|
idl_test(
|
||||||
const srcs = ['longtasks', 'performance-timeline'];
|
['longtasks'],
|
||||||
const [idl, perf] = await Promise.all(
|
['performance-timeline'],
|
||||||
srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text())));
|
(idl_array, t) => new Promise((resolve, reject) => {
|
||||||
|
const longTask = () => {
|
||||||
const idl_array = new IdlArray();
|
const begin = self.performance.now();
|
||||||
idl_array.add_idls(idl);
|
while (self.performance.now() < begin + 100);
|
||||||
idl_array.add_dependency_idls(perf);
|
|
||||||
|
|
||||||
const testIdls = new Promise(resolve => {
|
|
||||||
try {
|
|
||||||
const observer = new PerformanceObserver(entryList => {
|
|
||||||
const entries = Array.from(entryList.getEntries());
|
|
||||||
const attribution = entries.reduce(
|
|
||||||
(sum, e) => sum.concat(e.attribution || []), []);
|
|
||||||
idl_array.add_objects({
|
|
||||||
PerformanceLongTaskTiming: entries,
|
|
||||||
TaskAttributionTiming: attribution,
|
|
||||||
});
|
|
||||||
idl_array.test();
|
|
||||||
resolve();
|
|
||||||
});
|
|
||||||
observer.observe({entryTypes: ['longtask']});
|
|
||||||
} catch (e) {
|
|
||||||
// Will be surfaces in idlharness.js's test_object below.
|
|
||||||
}
|
}
|
||||||
});
|
t.step_timeout(longTask, 0);
|
||||||
|
|
||||||
const longTask = () => {
|
const observer = new PerformanceObserver(entryList => {
|
||||||
var begin = self.performance.now();
|
const entries = Array.from(entryList.getEntries());
|
||||||
while (self.performance.now() < begin + 100);
|
const attribution = entries.reduce(
|
||||||
}
|
(sum, e) => sum.concat(e.attribution || []), []);
|
||||||
t.step_timeout(longTask, 0);
|
idl_array.add_objects({
|
||||||
|
PerformanceLongTaskTiming: entries,
|
||||||
|
TaskAttributionTiming: attribution,
|
||||||
|
});
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
observer.observe({entryTypes: ['longtask']});
|
||||||
|
|
||||||
const timeout = new Promise(
|
t.step_timeout(() => {
|
||||||
(_, reject) => t.step_timeout(reject, 1000));
|
reject('longtask entry was not observed');
|
||||||
return Promise.race([testIdls, timeout])
|
}, 1000);
|
||||||
.then(
|
})
|
||||||
t.step_func_done(),
|
);
|
||||||
() => {
|
|
||||||
idl_array.test(); // Rejected, but test what we can.
|
|
||||||
return Promise.reject('LongTask was not observed');
|
|
||||||
});
|
|
||||||
}, 'longtasks interfaces');
|
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>mo movablelimits default value</title>
|
||||||
|
<meta charset="utf-8"/></head>
|
||||||
|
<body>
|
||||||
|
<math>
|
||||||
|
<munder>
|
||||||
|
<mo movablelimits="true">∑</mo>
|
||||||
|
<mi>x</mi>
|
||||||
|
</munder>
|
||||||
|
<munder>
|
||||||
|
<mo movablelimits="false">∫</mo>
|
||||||
|
<mi>x</mi>
|
||||||
|
</munder>
|
||||||
|
</math>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,22 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<title><mo> movablelimits default value</title>
|
||||||
|
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#tokenmo">
|
||||||
|
<meta name="assert" content="Verifies default value of movablelimits for some operators.">
|
||||||
|
<link rel="match" href="mo-movablelimits-default-ref.html">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<math>
|
||||||
|
<munder>
|
||||||
|
<mo>∑</mo> <!-- This has movablelimits="true" in the operator dictionary -->
|
||||||
|
<mi>x</mi>
|
||||||
|
</munder>
|
||||||
|
<munder>
|
||||||
|
<mo>∫</mo> <!-- This has movablelimits="false" in the operator dictionary -->
|
||||||
|
<mi>x</mi>
|
||||||
|
</munder>
|
||||||
|
</math>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<title>Test dynamically removing movablelimits attribute</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<math>
|
||||||
|
<munder>
|
||||||
|
<mo>∑</mo>
|
||||||
|
<mi>x</mi>
|
||||||
|
</munder>
|
||||||
|
</math>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,24 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class="reftest-wait">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<title>Test dynamically removing movablelimits attribute</title>
|
||||||
|
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#tokenmo">
|
||||||
|
<meta name="assert" content="Verifies dynamically removing movablelimits.">
|
||||||
|
<link rel="match" href="mo-movablelimits-dynamic-ref.html">
|
||||||
|
<script>
|
||||||
|
window.addEventListener("load", () => {
|
||||||
|
document.getElementById('a').removeAttribute('movablelimits');
|
||||||
|
document.documentElement.classList.remove('reftest-wait');
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<math>
|
||||||
|
<munder>
|
||||||
|
<mo id="a" movablelimits="false">∑</mo>
|
||||||
|
<mi>x</mi>
|
||||||
|
</munder>
|
||||||
|
</math>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,29 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<title><mo> movablelimits</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<math>
|
||||||
|
<msub>
|
||||||
|
<mtext>A</mtext>
|
||||||
|
<mi>B</mi>
|
||||||
|
</msub>
|
||||||
|
<munder>
|
||||||
|
<mtext>A</mtext>
|
||||||
|
<mi>B</mi>
|
||||||
|
</munder>
|
||||||
|
</math>
|
||||||
|
<math displaystyle="true">
|
||||||
|
<munder>
|
||||||
|
<mtext>A</mtext>
|
||||||
|
<mi>B</mi>
|
||||||
|
</munder>
|
||||||
|
<munder>
|
||||||
|
<mtext>A</mtext>
|
||||||
|
<mi>B</mi>
|
||||||
|
</munder>
|
||||||
|
</math>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,32 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<title><mo> movablelimits</title>
|
||||||
|
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#tokenmo">
|
||||||
|
<meta name="assert" content="Verifies effect of movablelimits on mo in both displaystyle modes.">
|
||||||
|
<link rel="match" href="mo-movablelimits-ref.html">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<math>
|
||||||
|
<munder>
|
||||||
|
<mo lspace="0px" rspace="0px" movablelimits="true">A</mo>
|
||||||
|
<mi>B</mi>
|
||||||
|
</munder>
|
||||||
|
<munder>
|
||||||
|
<mo lspace="0px" rspace="0px" movablelimits="false">A</mo>
|
||||||
|
<mi>C</mi>
|
||||||
|
</munder>
|
||||||
|
</math>
|
||||||
|
<math displaystyle="true">
|
||||||
|
<munder>
|
||||||
|
<mo lspace="0px" rspace="0px" movablelimits="true">A</mo>
|
||||||
|
<mi>B</mi>
|
||||||
|
</munder>
|
||||||
|
<munder>
|
||||||
|
<mo lspace="0px" rspace="0px" movablelimits="false">A</mo>
|
||||||
|
<mi>B</mi>
|
||||||
|
</munder>
|
||||||
|
</math>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,19 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<title>Verify mathsize attribute</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- The style attribute should have the same effect as the mathsize
|
||||||
|
attribute. -->
|
||||||
|
<div>
|
||||||
|
<math>
|
||||||
|
<mi style="font-size: 200%;">x</mi>
|
||||||
|
<mi style="font-size: 3em;">x</mi>
|
||||||
|
</math>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,21 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<title>Verify mathsize attribute</title>
|
||||||
|
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#legacy-mathml-style-attributes">
|
||||||
|
<meta name="assert" content="Verify mathsize attribute values.">
|
||||||
|
<link rel="match" href="mathsize-attribute-ref.html">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- This verifies the effect of the mathsize attribute. -->
|
||||||
|
<div>
|
||||||
|
<math>
|
||||||
|
<mi mathsize="200%">x</mi>
|
||||||
|
<mi mathsize="3em">x</mi>
|
||||||
|
</math>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,18 @@
|
||||||
|
<!DOCTYPE quirks-mode>
|
||||||
|
<link rel="help" href="https://quirks.spec.whatwg.org/#the-body-element-fills-the-html-element-quirk">
|
||||||
|
<link rel="match" href="body-fills-html-quirk-ref.html">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
border: solid;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
span {
|
||||||
|
display: inline-block;
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
background: green;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<body>
|
||||||
|
<span></span>
|
||||||
|
</body>
|
|
@ -0,0 +1,18 @@
|
||||||
|
<!DOCTYPE quirks-mode>
|
||||||
|
<link rel="help" href="https://quirks.spec.whatwg.org/#the-body-element-fills-the-html-element-quirk">
|
||||||
|
<link rel="match" href="body-fills-html-quirk-ref.html">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
border: solid;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
span {
|
||||||
|
display: inline-block;
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
background: green;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<body>
|
||||||
|
<span></span>
|
||||||
|
</body>
|
|
@ -0,0 +1,18 @@
|
||||||
|
<!DOCTYPE quirks-mode>
|
||||||
|
<link rel="help" href="https://quirks.spec.whatwg.org/#the-body-element-fills-the-html-element-quirk">
|
||||||
|
<link rel="match" href="body-fills-html-quirk-ref.html">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
border: solid;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
span {
|
||||||
|
display: inline-block;
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
background: green;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<body>
|
||||||
|
<span></span>
|
||||||
|
</body>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<div style="width: 100px; height: 100px; border: solid; background: green;"></div>
|
|
@ -0,0 +1,17 @@
|
||||||
|
<style>
|
||||||
|
table {
|
||||||
|
font-size: 10px;
|
||||||
|
font-family: Ahem;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
vertical-align: bottom;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background: black;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td id="td">1234567<img id="img" src=""></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
|
@ -0,0 +1,20 @@
|
||||||
|
<title>An out-of-flow imagef in the table cell width calculation quirk</title>
|
||||||
|
<link rel="match" href="reference/table-cell-width-calculation-abspos-ref.html">
|
||||||
|
<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
|
||||||
|
<style>
|
||||||
|
table {
|
||||||
|
font-size: 10px;
|
||||||
|
font-family: Ahem;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
position: absolute;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background: black;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td id="td">1234567<img id="img" src=""></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
|
@ -1,52 +0,0 @@
|
||||||
// META: title=SMS Receiver API: Constructor
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
let used = false;
|
|
||||||
|
|
||||||
new SMSReceiver({
|
|
||||||
get timeout() {
|
|
||||||
used = true;
|
|
||||||
return 60;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
assert_true(used, 'constructor options "timeout" member was used');
|
|
||||||
}, 'constructor uses timeout property');
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
assert_throws(new TypeError(), function () {
|
|
||||||
new SMSReceiver({timeout: 0});
|
|
||||||
assert_unreached('Timeout 0 should reject');
|
|
||||||
});
|
|
||||||
}, 'constructor throws with invalid timeout (0)');
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
assert_throws(new TypeError(), function () {
|
|
||||||
new SMSReceiver({timeout: null});
|
|
||||||
assert_unreached('Timeout of null should reject');
|
|
||||||
});
|
|
||||||
}, 'constructor throws with invalid timeout (null)');
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
assert_throws(new TypeError(), function () {
|
|
||||||
new SMSReceiver({timeout: -1});
|
|
||||||
assert_unreached('Timeout negative numbers should reject');
|
|
||||||
});
|
|
||||||
}, 'constructor throws with invalid timeout (-1)');
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
assert_throws(new TypeError(), function () {
|
|
||||||
new SMSReceiver({timeout: NaN});
|
|
||||||
assert_unreached('Timeout of NaN should reject');
|
|
||||||
});
|
|
||||||
}, 'constructor throws with invalid timeout (NaN)');
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
new SMSReceiver();
|
|
||||||
}, 'constructor uses a default value for the timeout when none is passed');
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
new SMSReceiver({timeout: undefined});
|
|
||||||
}, 'constructor uses a default value for the timeout');
|
|
|
@ -19,12 +19,12 @@ promise_test(async (t) => {
|
||||||
idl_array.add_dependency_idls(dom);
|
idl_array.add_dependency_idls(dom);
|
||||||
idl_array.add_dependency_idls(html);
|
idl_array.add_dependency_idls(html);
|
||||||
|
|
||||||
self.receiver = new SMSReceiver({timeout: 60});
|
|
||||||
|
|
||||||
idl_array.add_objects({
|
idl_array.add_objects({
|
||||||
SmsReceiver: ['receiver'],
|
SmsReceiver: ['navigator.sms'],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
idl_array.add_objects({ Navigator: ['navigator'] })
|
||||||
|
|
||||||
idl_array.test();
|
idl_array.test();
|
||||||
}, 'Test IDL implementation of the SMS Receiver API');
|
}, 'Test IDL implementation of the SMS Receiver API');
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
await expect(getNextMessage).andReturn((timeout) => {
|
await expect(getNextMessage).andReturn((timeout) => {
|
||||||
// mock behavior
|
// mock behavior
|
||||||
})
|
})
|
||||||
3) Call new SMSReceiver().start();
|
3) Call navigator.sms.receive()
|
||||||
4) Verify results
|
4) Verify results
|
||||||
|
|
||||||
The mocking API is browser agnostic and is designed such that other engines
|
The mocking API is browser agnostic and is designed such that other engines
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
per engine:
|
per engine:
|
||||||
|
|
||||||
- function getNextMessage(): the main/only function that can be mocked.
|
- function getNextMessage(): the main/only function that can be mocked.
|
||||||
- function expect(): the main/only function that enables us to mock it.
|
- function expect(): the main/only function that enables us to mock it
|
||||||
- enum State {kSuccess, kTimeout}: allows you to mock success/failures.
|
- enum State {kSuccess, kTimeout}: allows you to mock success/failures.
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
@ -43,37 +43,140 @@ promise_test(async t => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
let receiver = new SMSReceiver();
|
let sms = await navigator.sms.receive();
|
||||||
|
|
||||||
let watcher = new EventWatcher(t, receiver, ["change"]);
|
assert_equals(sms.content, "hello");
|
||||||
|
|
||||||
await receiver.start();
|
|
||||||
|
|
||||||
// Waits for the first event.
|
|
||||||
await watcher.wait_for("change");
|
|
||||||
|
|
||||||
assert_equals(receiver.sms.content, "hello");
|
|
||||||
}, 'Basic usage');
|
}, 'Basic usage');
|
||||||
|
|
||||||
promise_test(async t => {
|
promise_test(async t => {
|
||||||
await expect(getNextMessage).andReturn((timeout) => {
|
await expect(getNextMessage).andReturn((timeout) => {
|
||||||
return Promise.resolve({
|
return Promise.resolve({
|
||||||
sms: {
|
sms: {
|
||||||
content: "",
|
content: "hello1",
|
||||||
|
status: Status.kSuccess,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
await expect(getNextMessage).andReturn((timeout) => {
|
||||||
|
return Promise.resolve({
|
||||||
|
sms: {
|
||||||
|
content: "hello2",
|
||||||
|
status: Status.kSuccess,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
let sms1 = navigator.sms.receive();
|
||||||
|
let sms2 = navigator.sms.receive();
|
||||||
|
|
||||||
|
let msg2 = await sms2;
|
||||||
|
let msg1 = await sms1;
|
||||||
|
|
||||||
|
assert_equals(msg1.content, "hello1");
|
||||||
|
assert_equals(msg2.content, "hello2");
|
||||||
|
}, 'Handle multiple requests in different order.');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
await expect(getNextMessage).andReturn((timeout) => {
|
||||||
|
return Promise.resolve({
|
||||||
|
sms: {
|
||||||
|
status: Status.kTimeout
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
await expect(getNextMessage).andReturn((timeout) => {
|
||||||
|
return Promise.resolve({
|
||||||
|
sms: {
|
||||||
|
content: "success",
|
||||||
|
status: Status.kSuccess
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
let timeout_sms = navigator.sms.receive();
|
||||||
|
let successful_sms = navigator.sms.receive();
|
||||||
|
|
||||||
|
let successful_msg = await successful_sms;
|
||||||
|
assert_equals(successful_msg.content, "success");
|
||||||
|
|
||||||
|
try {
|
||||||
|
await timeout_sms;
|
||||||
|
assert_unreached('Expected TimeoutError to be thrown.');
|
||||||
|
} catch (error) {
|
||||||
|
assert_equals(error.name, "TimeoutError");
|
||||||
|
assert_equals(error.message, "SMSReceiver timed out.");
|
||||||
|
}
|
||||||
|
}, 'Handle multiple requests with success and error.');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
await expect(getNextMessage).andReturn((timeout) => {
|
||||||
|
return Promise.resolve({
|
||||||
|
sms: {
|
||||||
status: Status.kTimeout,
|
status: Status.kTimeout,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
let receiver = new SMSReceiver();
|
try {
|
||||||
|
await navigator.sms.receive();
|
||||||
let watcher = new EventWatcher(t, receiver, ["timeout"]);
|
assert_unreached('Expected TimeoutError to be thrown.');
|
||||||
|
} catch (error) {
|
||||||
await receiver.start();
|
assert_equals(error.name, "TimeoutError");
|
||||||
|
assert_equals(error.message, "SMSReceiver timed out.");
|
||||||
// Waits for the first event.
|
}
|
||||||
await watcher.wait_for("timeout");
|
|
||||||
}, 'Deal with timeouts');
|
}, 'Deal with timeouts');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
try {
|
||||||
|
await navigator.sms.receive({timeout: 0});
|
||||||
|
assert_unreached('Expected NotSupportedError to be thrown.');
|
||||||
|
} catch (error) {
|
||||||
|
assert_equals(error.name, "NotSupportedError");
|
||||||
|
assert_equals(error.message, "Invalid timeout.");
|
||||||
|
}
|
||||||
|
}, 'Should throw error with invalid timeout (0)');
|
||||||
|
|
||||||
</script>
|
promise_test(async t => {
|
||||||
|
try {
|
||||||
|
await navigator.sms.receive({timeout: null});
|
||||||
|
assert_unreached('Expected NotSupportedError to be thrown.');
|
||||||
|
} catch (error) {
|
||||||
|
assert_equals(error.name, "NotSupportedError");
|
||||||
|
assert_equals(error.message, "Invalid timeout.");
|
||||||
|
}
|
||||||
|
}, 'Should throw error with invalid timeout (null)');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
try {
|
||||||
|
await navigator.sms.receive({timeout: -1});
|
||||||
|
assert_unreached('Expected NotSupportedError to be thrown.');
|
||||||
|
} catch (error) {
|
||||||
|
assert_equals(error.name, "NotSupportedError");
|
||||||
|
assert_equals(error.message, "Invalid timeout.");
|
||||||
|
}
|
||||||
|
}, 'Should throw error with invalid timeout (-1)');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
try {
|
||||||
|
await navigator.sms.receive({timeout: NaN});
|
||||||
|
assert_unreached('Expected NotSupportedError to be thrown.');
|
||||||
|
} catch (error) {
|
||||||
|
assert_equals(error.name, "NotSupportedError");
|
||||||
|
assert_equals(error.message, "Invalid timeout.");
|
||||||
|
}
|
||||||
|
}, 'Should throw error with invalid timeout (NaN)');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
await expect(getNextMessage).andReturn((timeout) => {
|
||||||
|
return Promise.resolve({
|
||||||
|
sms: {
|
||||||
|
content: "hello",
|
||||||
|
status: Status.kSuccess,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
let sms = await navigator.sms.receive({timeout: undefined});
|
||||||
|
assert_equals(sms.content, "hello");
|
||||||
|
}, 'Should use default value for timeout (undefined)');
|
||||||
|
</script>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<script>
|
<script>
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
new SMSReceiver().start().catch(error => {
|
navigator.sms.receive().catch(error => {
|
||||||
window.parent.postMessage({errorType: error.name}, '*');
|
window.parent.postMessage({errorType: error.name}, '*');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -20,38 +20,34 @@ let interceptor = (async function() {
|
||||||
})();
|
})();
|
||||||
|
|
||||||
class SmsProvider {
|
class SmsProvider {
|
||||||
|
constructor() {
|
||||||
|
this.returnValues = {}
|
||||||
|
}
|
||||||
|
|
||||||
getNextMessage(timeout) {
|
getNextMessage(timeout) {
|
||||||
return this.handler.getNextMessage(timeout);
|
let call = this.returnValues.getNextMessage.shift();
|
||||||
|
if (!call) {
|
||||||
|
throw new Error("Unexpected call.");
|
||||||
|
}
|
||||||
|
return call(timeout);
|
||||||
}
|
}
|
||||||
setHandler(handler) {
|
|
||||||
this.handler = handler;
|
pushReturnValues(callName, returnValues) {
|
||||||
|
this.returnValues[callName] = this.returnValues[callName] || [];
|
||||||
|
this.returnValues[callName].push(returnValues);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
setBinding(binding) {
|
|
||||||
this.binding = binding;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
close() {
|
|
||||||
this.binding.close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getNextMessage(timeout, callback) {
|
function getNextMessage(timeout, callback) {
|
||||||
throw new Error("expected to be overriden by tests");
|
throw new Error("expected to be overriden by tests");
|
||||||
}
|
}
|
||||||
|
|
||||||
async function close() {
|
|
||||||
let provider = await interceptor;
|
|
||||||
provider.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
function expect(call) {
|
function expect(call) {
|
||||||
return {
|
return {
|
||||||
async andReturn(callback) {
|
async andReturn(callback) {
|
||||||
let handler = {};
|
|
||||||
handler[call.name] = callback;
|
|
||||||
let provider = await interceptor;
|
let provider = await interceptor;
|
||||||
provider.setHandler(handler);
|
provider.pushReturnValues(call.name, callback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,7 +57,8 @@ const Status = {};
|
||||||
function intercept() {
|
function intercept() {
|
||||||
let provider = new SmsProvider();
|
let provider = new SmsProvider();
|
||||||
|
|
||||||
let interceptor = new MojoInterfaceInterceptor(blink.mojom.SmsManager.$interfaceName);
|
let interceptor = new MojoInterfaceInterceptor(
|
||||||
|
blink.mojom.SmsManager.$interfaceName);
|
||||||
interceptor.oninterfacerequest = (e) => {
|
interceptor.oninterfacerequest = (e) => {
|
||||||
let impl = new blink.mojom.SmsManager(provider);
|
let impl = new blink.mojom.SmsManager(provider);
|
||||||
impl.bindHandle(e.handle);
|
impl.bindHandle(e.handle);
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
[SecureContext]
|
||||||
|
interface mixin NavigatorSMS {
|
||||||
|
readonly attribute SMSReceiver sms;
|
||||||
|
};
|
||||||
|
|
||||||
|
Navigator includes NavigatorSMS;
|
||||||
|
|
||||||
[
|
[
|
||||||
SecureContext,
|
SecureContext,
|
||||||
Exposed=(Window,DedicatedWorker)]
|
Exposed=(Window,DedicatedWorker)]
|
||||||
|
@ -11,10 +18,7 @@ dictionary SMSReceiverOptions {
|
||||||
|
|
||||||
[
|
[
|
||||||
SecureContext,
|
SecureContext,
|
||||||
Exposed=(Window,DedicatedWorker),
|
Exposed=Window
|
||||||
Constructor(optional SMSReceiverOptions options)
|
] interface SMSReceiver {
|
||||||
] interface SMSReceiver : EventTarget {
|
Promise<SMS> receive(optional SMSReceiverOptions options);
|
||||||
readonly attribute SMS sms;
|
|
||||||
attribute EventHandler onchange;
|
|
||||||
Promise<void> start();
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -32,18 +32,6 @@ function modifies_relevant_files {
|
||||||
grep -E --silent '^(docs|tools)/'
|
grep -E --silent '^(docs|tools)/'
|
||||||
}
|
}
|
||||||
|
|
||||||
if is_pull_request ; then
|
|
||||||
echo Submission comes from a pull request. Exiting without building.
|
|
||||||
|
|
||||||
exit ${neutral_status}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! targets_master ; then
|
|
||||||
echo Submission does not target the 'master' branch. Exiting without building.
|
|
||||||
|
|
||||||
exit ${neutral_status}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! modifies_relevant_files ; then
|
if ! modifies_relevant_files ; then
|
||||||
echo No files related to the website have been modified. Exiting without
|
echo No files related to the website have been modified. Exiting without
|
||||||
echo building.
|
echo building.
|
||||||
|
@ -78,6 +66,18 @@ touch .nojekyll
|
||||||
# Publish the website by pushing the built contents to the `gh-pages` branch
|
# Publish the website by pushing the built contents to the `gh-pages` branch
|
||||||
git add .
|
git add .
|
||||||
|
|
||||||
|
if is_pull_request ; then
|
||||||
|
echo Submission comes from a pull request. Exiting without publishing.
|
||||||
|
|
||||||
|
exit ${neutral_status}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! targets_master ; then
|
||||||
|
echo Submission does not target the 'master' branch. Exiting without publishing.
|
||||||
|
|
||||||
|
exit ${neutral_status}
|
||||||
|
fi
|
||||||
|
|
||||||
if git diff --exit-code --quiet --staged ; then
|
if git diff --exit-code --quiet --staged ; then
|
||||||
echo No change to the website contents. Exiting without publishing.
|
echo No change to the website contents. Exiting without publishing.
|
||||||
|
|
||||||
|
|
|
@ -26,9 +26,17 @@
|
||||||
non_strings.forEach(invalid_serialNumber => {
|
non_strings.forEach(invalid_serialNumber => {
|
||||||
assert_throws(new TypeError, () => new NFCReadingEvent(
|
assert_throws(new TypeError, () => new NFCReadingEvent(
|
||||||
'message',
|
'message',
|
||||||
{invalid_serialNumber, message}
|
{serialNumber: invalid_serialNumber, message: message}
|
||||||
));
|
));
|
||||||
});
|
});
|
||||||
}, 'NFCReadingEvent constructor with non-string serialNumber');
|
}, 'NFCReadingEvent constructor with invalid serialNumber');
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
const message = createMessage([createJsonRecord(test_json_data)]);
|
||||||
|
const event = new NFCReadingEvent('type', {serialNumber: '', message: message});
|
||||||
|
assert_equals(event.type, 'type', 'type');
|
||||||
|
assert_equals(event.serialNumber, '', 'serialNumber');
|
||||||
|
assertWebNDEFMessagesEqual(event.message, message, 'message');
|
||||||
|
}, 'NFCReadingEvent constructor with valid parameters');
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -254,6 +254,9 @@ async function doSignalingHandshake(localPc, remotePc, options={}) {
|
||||||
// This should work for RTCSctpTransport, RTCDtlsTransport and RTCIceTransport.
|
// This should work for RTCSctpTransport, RTCDtlsTransport and RTCIceTransport.
|
||||||
function waitForState(transport, state) {
|
function waitForState(transport, state) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
if (transport.state == state) {
|
||||||
|
resolve();
|
||||||
|
}
|
||||||
const eventHandler = () => {
|
const eventHandler = () => {
|
||||||
if (transport.state == state) {
|
if (transport.state == state) {
|
||||||
transport.removeEventListener('statechange', eventHandler, false);
|
transport.removeEventListener('statechange', eventHandler, false);
|
||||||
|
|
|
@ -276,5 +276,42 @@ async_test(t => {
|
||||||
|
|
||||||
closed
|
closed
|
||||||
The RTCIceTransport has shut down and is no longer responding to STUN requests.
|
The RTCIceTransport has shut down and is no longer responding to STUN requests.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
for (let bundle_policy of ['balanced', 'max-bundle', 'max-compat']) {
|
||||||
|
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
const caller = new RTCPeerConnection({bundlePolicy: bundle_policy});
|
||||||
|
t.add_cleanup(() => caller.close());
|
||||||
|
const stream = await navigator.mediaDevices.getUserMedia(
|
||||||
|
{audio: true, video:true});
|
||||||
|
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||||
|
const [track1, track2] = stream.getTracks();
|
||||||
|
const sender1 = caller.addTrack(track1);
|
||||||
|
const sender2 = caller.addTrack(track2);
|
||||||
|
caller.createDataChannel('datachannel');
|
||||||
|
const callee = new RTCPeerConnection();
|
||||||
|
t.add_cleanup(() => callee.close());
|
||||||
|
coupleIceCandidates(caller, callee);
|
||||||
|
const offer = await caller.createOffer();
|
||||||
|
await caller.setLocalDescription(offer);
|
||||||
|
const [caller_transceiver1, caller_transceiver2] = caller.getTransceivers();
|
||||||
|
assert_equals(sender1.transport, caller_transceiver1.sender.transport);
|
||||||
|
await callee.setRemoteDescription(offer);
|
||||||
|
const [callee_transceiver1, callee_transceiver2] = callee.getTransceivers();
|
||||||
|
const answer = await callee.createAnswer();
|
||||||
|
await callee.setLocalDescription(answer);
|
||||||
|
await caller.setRemoteDescription(answer);
|
||||||
|
// At this point, we should have a single ICE transport, and it
|
||||||
|
// should eventually get to the "connected" state.
|
||||||
|
await waitForState(caller_transceiver1.receiver.transport.iceTransport,
|
||||||
|
'connected');
|
||||||
|
// The PeerConnection's iceConnectionState should therefore be 'connected'
|
||||||
|
assert_equals(caller.iceConnectionState, 'connected',
|
||||||
|
'PC.iceConnectionState:');
|
||||||
|
}, 'iceConnectionState changes at the right time, with bundle policy ' +
|
||||||
|
bundle_policy);
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -26,15 +26,36 @@ function iceGatheringCompleteWaiter(pc) {
|
||||||
return waiter;
|
return waiter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class StateLogger {
|
||||||
|
constructor(source, eventname, field) {
|
||||||
|
source.addEventListener(eventname, event => {
|
||||||
|
this.events.push(source[field]);
|
||||||
|
});
|
||||||
|
this.events = [source[field]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class IceStateLogger extends StateLogger {
|
||||||
|
constructor(source) {
|
||||||
|
super(source, 'iceconnectionstatechange', 'iceConnectionState');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
promise_test(async t => {
|
promise_test(async t => {
|
||||||
const pc1 = new RTCPeerConnection();
|
const pc1 = new RTCPeerConnection();
|
||||||
const pc2 = new RTCPeerConnection();
|
const pc2 = new RTCPeerConnection();
|
||||||
t.add_cleanup(() => pc1.close());
|
t.add_cleanup(() => pc1.close());
|
||||||
t.add_cleanup(() => pc2.close());
|
t.add_cleanup(() => pc2.close());
|
||||||
pc1.createDataChannel('datachannel');
|
pc1.createDataChannel('datachannel');
|
||||||
|
pc1IceStates = new IceStateLogger(pc1);
|
||||||
|
pc2IceStates = new IceStateLogger(pc1);
|
||||||
coupleIceCandidates(pc1, pc2);
|
coupleIceCandidates(pc1, pc2);
|
||||||
await doSignalingHandshake(pc1, pc2);
|
await doSignalingHandshake(pc1, pc2);
|
||||||
await waitForIceStateChange(pc1, ['connected', 'completed']);
|
// Note - it's been claimed that this state sometimes jumps straight
|
||||||
|
// to "completed". If so, this test should be flaky.
|
||||||
|
await waitForIceStateChange(pc1, ['connected']);
|
||||||
|
assert_array_equals(pc1IceStates.events, ['new', 'checking', 'connected']);
|
||||||
|
assert_array_equals(pc2IceStates.events, ['new', 'checking', 'connected']);
|
||||||
}, 'Two way ICE exchange works');
|
}, 'Two way ICE exchange works');
|
||||||
|
|
||||||
promise_test(async t => {
|
promise_test(async t => {
|
||||||
|
@ -42,6 +63,8 @@ promise_test(async t => {
|
||||||
const pc2 = new RTCPeerConnection();
|
const pc2 = new RTCPeerConnection();
|
||||||
t.add_cleanup(() => pc1.close());
|
t.add_cleanup(() => pc1.close());
|
||||||
t.add_cleanup(() => pc2.close());
|
t.add_cleanup(() => pc2.close());
|
||||||
|
pc1IceStates = new IceStateLogger(pc1);
|
||||||
|
pc2IceStates = new IceStateLogger(pc1);
|
||||||
let candidates = [];
|
let candidates = [];
|
||||||
pc1.createDataChannel('datachannel');
|
pc1.createDataChannel('datachannel');
|
||||||
pc1.onicecandidate = e => {
|
pc1.onicecandidate = e => {
|
||||||
|
@ -62,6 +85,8 @@ promise_test(async t => {
|
||||||
const candidate_pair = pc1.sctp.transport.iceTransport.getSelectedCandidatePair();
|
const candidate_pair = pc1.sctp.transport.iceTransport.getSelectedCandidatePair();
|
||||||
assert_equals(candidate_pair.local.type, 'host');
|
assert_equals(candidate_pair.local.type, 'host');
|
||||||
assert_equals(candidate_pair.remote.type, 'prflx');
|
assert_equals(candidate_pair.remote.type, 'prflx');
|
||||||
|
assert_array_equals(pc1IceStates.events, ['new', 'checking', 'connected']);
|
||||||
|
assert_array_equals(pc2IceStates.events, ['new', 'checking', 'connected']);
|
||||||
}, 'Adding only caller -> callee candidates gives a connection');
|
}, 'Adding only caller -> callee candidates gives a connection');
|
||||||
|
|
||||||
promise_test(async t => {
|
promise_test(async t => {
|
||||||
|
@ -69,6 +94,8 @@ promise_test(async t => {
|
||||||
const pc2 = new RTCPeerConnection();
|
const pc2 = new RTCPeerConnection();
|
||||||
t.add_cleanup(() => pc1.close());
|
t.add_cleanup(() => pc1.close());
|
||||||
t.add_cleanup(() => pc2.close());
|
t.add_cleanup(() => pc2.close());
|
||||||
|
pc1IceStates = new IceStateLogger(pc1);
|
||||||
|
pc2IceStates = new IceStateLogger(pc1);
|
||||||
let candidates = [];
|
let candidates = [];
|
||||||
pc1.createDataChannel('datachannel');
|
pc1.createDataChannel('datachannel');
|
||||||
pc2.onicecandidate = e => {
|
pc2.onicecandidate = e => {
|
||||||
|
@ -89,8 +116,92 @@ promise_test(async t => {
|
||||||
const candidate_pair = pc2.sctp.transport.iceTransport.getSelectedCandidatePair();
|
const candidate_pair = pc2.sctp.transport.iceTransport.getSelectedCandidatePair();
|
||||||
assert_equals(candidate_pair.local.type, 'host');
|
assert_equals(candidate_pair.local.type, 'host');
|
||||||
assert_equals(candidate_pair.remote.type, 'prflx');
|
assert_equals(candidate_pair.remote.type, 'prflx');
|
||||||
|
assert_array_equals(pc1IceStates.events, ['new', 'checking', 'connected']);
|
||||||
|
assert_array_equals(pc2IceStates.events, ['new', 'checking', 'connected']);
|
||||||
}, 'Adding only callee -> caller candidates gives a connection');
|
}, 'Adding only callee -> caller candidates gives a connection');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
const pc1 = new RTCPeerConnection();
|
||||||
|
const pc2 = new RTCPeerConnection();
|
||||||
|
t.add_cleanup(() => pc1.close());
|
||||||
|
t.add_cleanup(() => pc2.close());
|
||||||
|
pc1IceStates = new IceStateLogger(pc1);
|
||||||
|
pc2IceStates = new IceStateLogger(pc1);
|
||||||
|
let pc2ToPc1Candidates = [];
|
||||||
|
pc1.createDataChannel('datachannel');
|
||||||
|
pc2.onicecandidate = e => {
|
||||||
|
pc2ToPc1Candidates.push(e.candidate);
|
||||||
|
// This particular test verifies that candidates work
|
||||||
|
// properly if added from the pc2 onicecandidate event.
|
||||||
|
if (!e.candidate) {
|
||||||
|
for (const candidate of pc2ToPc1Candidates) {
|
||||||
|
if (candidate) {
|
||||||
|
pc1.addIceCandidate(candidate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Candidates from |pc1| are not delivered to |pc2|. |pc2| will use
|
||||||
|
// peer-reflexive candidates.
|
||||||
|
await doSignalingHandshake(pc1, pc2);
|
||||||
|
await Promise.all([waitForIceStateChange(pc1, ['connected', 'completed']),
|
||||||
|
waitForIceStateChange(pc2, ['connected', 'completed'])]);
|
||||||
|
const candidate_pair = pc2.sctp.transport.iceTransport.getSelectedCandidatePair();
|
||||||
|
assert_equals(candidate_pair.local.type, 'host');
|
||||||
|
assert_equals(candidate_pair.remote.type, 'prflx');
|
||||||
|
assert_array_equals(pc1IceStates.events, ['new', 'checking', 'connected']);
|
||||||
|
assert_array_equals(pc2IceStates.events, ['new', 'checking', 'connected']);
|
||||||
|
}, 'Adding callee -> caller candidates from end-of-candidates gives a connection');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
const pc1 = new RTCPeerConnection();
|
||||||
|
const pc2 = new RTCPeerConnection();
|
||||||
|
t.add_cleanup(() => pc1.close());
|
||||||
|
t.add_cleanup(() => pc2.close());
|
||||||
|
pc1IceStates = new IceStateLogger(pc1);
|
||||||
|
pc2IceStates = new IceStateLogger(pc1);
|
||||||
|
let pc1ToPc2Candidates = [];
|
||||||
|
let pc2ToPc1Candidates = [];
|
||||||
|
pc1.createDataChannel('datachannel');
|
||||||
|
pc1.onicecandidate = e => {
|
||||||
|
pc1ToPc2Candidates.push(e.candidate);
|
||||||
|
}
|
||||||
|
pc2.onicecandidate = e => {
|
||||||
|
pc2ToPc1Candidates.push(e.candidate);
|
||||||
|
}
|
||||||
|
const offer = await pc1.createOffer();
|
||||||
|
await Promise.all([pc1.setLocalDescription(offer),
|
||||||
|
pc2.setRemoteDescription(offer)]);
|
||||||
|
const answer = await pc2.createAnswer();
|
||||||
|
await iceGatheringCompleteWaiter(pc1);
|
||||||
|
await pc2.setLocalDescription(answer).then(() => {
|
||||||
|
for (const candidate of pc1ToPc2Candidates) {
|
||||||
|
if (candidate) {
|
||||||
|
pc2.addIceCandidate(candidate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
await iceGatheringCompleteWaiter(pc2);
|
||||||
|
pc1.setRemoteDescription(answer).then(async () => {
|
||||||
|
for (const candidate of pc2ToPc1Candidates) {
|
||||||
|
if (candidate) {
|
||||||
|
await pc1.addIceCandidate(candidate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
await Promise.all([waitForIceStateChange(pc1, ['connected', 'completed']),
|
||||||
|
waitForIceStateChange(pc2, ['connected', 'completed'])]);
|
||||||
|
const candidate_pair =
|
||||||
|
pc1.sctp.transport.iceTransport.getSelectedCandidatePair();
|
||||||
|
assert_equals(candidate_pair.local.type, 'host');
|
||||||
|
// When we supply remote candidates, we expect a jump to the 'host' candidate,
|
||||||
|
// but it might also remain as 'prflx'.
|
||||||
|
assert_true(candidate_pair.remote.type == 'host' ||
|
||||||
|
candidate_pair.remote.type == 'prflx');
|
||||||
|
assert_array_equals(pc1IceStates.events, ['new', 'checking', 'connected']);
|
||||||
|
assert_array_equals(pc2IceStates.events, ['new', 'checking', 'connected']);
|
||||||
|
}, 'Explicit offer/answer exchange gives a connection');
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue