mirror of
https://github.com/servo/servo.git
synced 2025-08-04 05:00:08 +01:00
Update web-platform-tests to revision 86e157b387e63ba586d8ad51d2fcd5690626f5ad
This commit is contained in:
parent
bc82521eb7
commit
b642b70974
54 changed files with 728 additions and 480 deletions
|
@ -1,4 +1,5 @@
|
|||
[url-in-tags-revoke.window.html]
|
||||
expected: TIMEOUT
|
||||
[Fetching a blob URL immediately before revoking it works in an iframe.]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -14,3 +15,6 @@
|
|||
[Opening a blob URL in a new window by clicking an <a> tag works immediately before revoking the URL.]
|
||||
expected: FAIL
|
||||
|
||||
[Fetching a blob URL immediately before revoking it works in <script> tags.]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -109872,7 +109872,7 @@
|
|||
"/css/css-contain/contain-size-001.html",
|
||||
[
|
||||
[
|
||||
"/css/reference/pass_if_pass_below.html",
|
||||
"/css/css-contain/reference/pass_if_pass_below_clipped.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
|
@ -109884,7 +109884,7 @@
|
|||
"/css/css-contain/contain-size-002.html",
|
||||
[
|
||||
[
|
||||
"/css/reference/pass_if_pass_below.html",
|
||||
"/css/css-contain/reference/pass_if_pass_below_clipped.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
|
@ -109896,7 +109896,7 @@
|
|||
"/css/css-contain/contain-size-003.html",
|
||||
[
|
||||
[
|
||||
"/css/reference/pass_if_pass_below.html",
|
||||
"/css/css-contain/reference/pass_if_pass_below_clipped.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
|
@ -109932,7 +109932,7 @@
|
|||
"/css/css-contain/contain-size-006.html",
|
||||
[
|
||||
[
|
||||
"/css/reference/pass_if_pass_below.html",
|
||||
"/css/css-contain/reference/pass_if_pass_below_clipped.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
|
@ -110004,7 +110004,7 @@
|
|||
"/css/css-contain/contain-size-012.html",
|
||||
[
|
||||
[
|
||||
"/css/reference/pass_if_pass_below.html",
|
||||
"/css/css-contain/reference/pass_if_pass_below_clipped.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
|
@ -243536,6 +243536,11 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-contain/reference/pass_if_pass_below_clipped.html": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-contain/reference/quote-scoping-001-ref.html": [
|
||||
[
|
||||
{}
|
||||
|
@ -329650,6 +329655,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-logical/animation-004.html": [
|
||||
[
|
||||
"/css/css-logical/animation-004.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-logical/logical-box-border-color.html": [
|
||||
[
|
||||
"/css/css-logical/logical-box-border-color.html",
|
||||
|
@ -337584,6 +337595,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"custom-elements/range-and-constructors.html": [
|
||||
[
|
||||
"/custom-elements/range-and-constructors.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"custom-elements/reaction-timing.html": [
|
||||
[
|
||||
"/custom-elements/reaction-timing.html",
|
||||
|
@ -361970,6 +361987,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"html/syntax/parsing/meta-inhead-insertion-mode.html": [
|
||||
[
|
||||
"/html/syntax/parsing/meta-inhead-insertion-mode.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"html/syntax/parsing/named-character-references.html": [
|
||||
[
|
||||
"/html/syntax/parsing/named-character-references.html",
|
||||
|
@ -366538,12 +366561,6 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"navigation-timing/nav2_idlharness.html": [
|
||||
[
|
||||
"/navigation-timing/nav2_idlharness.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"navigation-timing/nav2_test_attributes_exist.html": [
|
||||
[
|
||||
"/navigation-timing/nav2_test_attributes_exist.html",
|
||||
|
@ -391198,20 +391215,18 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"uievents/idlharness.window.js": [
|
||||
[
|
||||
"/uievents/idlharness.window.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"uievents/interface/click-event.htm": [
|
||||
[
|
||||
"/uievents/interface/click-event.htm",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"uievents/interfaces.html": [
|
||||
[
|
||||
"/uievents/interfaces.html",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"uievents/legacy-domevents-tests/approved/ProcessingInstruction.DOMCharacterDataModified.html": [
|
||||
[
|
||||
"/uievents/legacy-domevents-tests/approved/ProcessingInstruction.DOMCharacterDataModified.html",
|
||||
|
@ -391724,9 +391739,9 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"vibration/idl.html": [
|
||||
"vibration/idlharness.window.js": [
|
||||
[
|
||||
"/vibration/idl.html",
|
||||
"/vibration/idlharness.window.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
|
@ -393466,6 +393481,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"webaudio/the-audio-api/the-delaynode-interface/delaynode-channel-count-1.html": [
|
||||
[
|
||||
"/webaudio/the-audio-api/the-delaynode-interface/delaynode-channel-count-1.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"webaudio/the-audio-api/the-delaynode-interface/delaynode-max-default-delay.html": [
|
||||
[
|
||||
"/webaudio/the-audio-api/the-delaynode-interface/delaynode-max-default-delay.html",
|
||||
|
@ -397766,9 +397787,9 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"webvtt/api/interfaces.html": [
|
||||
"webvtt/api/idlharness.window.js": [
|
||||
[
|
||||
"/webvtt/api/interfaces.html",
|
||||
"/webvtt/api/idlharness.window.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
|
@ -430604,7 +430625,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"background-fetch/fetch.https.window.js": [
|
||||
"cca63289206f75de446852c1b37fb0c0911aadd7",
|
||||
"f146212987a4ebb2e90edc190e9232cbd07210f9",
|
||||
"testharness"
|
||||
],
|
||||
"background-fetch/get-ids.https.window.js": [
|
||||
|
@ -430640,15 +430661,15 @@
|
|||
"support"
|
||||
],
|
||||
"background-fetch/service_workers/sw-update-ui.js": [
|
||||
"ae0ed090b42df76780ae23a9bf250d1e359917c4",
|
||||
"5dec087cd155b486b974f3a26c149fcd113380c3",
|
||||
"support"
|
||||
],
|
||||
"background-fetch/service_workers/sw.js": [
|
||||
"34ea5d4fb64fb410247d844b89e87f14a9223b11",
|
||||
"10e17f5874f2c76eaff7116107fa5896e31095a0",
|
||||
"support"
|
||||
],
|
||||
"background-fetch/update-ui.https.window.js": [
|
||||
"d561267d14eca9abe4bedf6c216d5044778aa843",
|
||||
"aed0bb86d26398aabc3688c6fee90c0cfc7d4206",
|
||||
"testharness"
|
||||
],
|
||||
"battery-status/META.yml": [
|
||||
|
@ -451548,7 +451569,7 @@
|
|||
"support"
|
||||
],
|
||||
"content-security-policy/securitypolicyviolation/targeting.html": [
|
||||
"10b96e9e61da890ac1f53124441083efb03d00c1",
|
||||
"28ca32e3dcc345fff5e187eee24e124cdbb250d4",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/securitypolicyviolation/upgrade-insecure-requests-reporting.https.html": [
|
||||
|
@ -518336,15 +518357,15 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/css-contain/contain-size-001.html": [
|
||||
"85bc4f49de1d1d8c58a3677286acfa9a5242512e",
|
||||
"49dfc41601eb32f80c76a427403beb2f98d3f404",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-contain/contain-size-002.html": [
|
||||
"bfc6401cfb162929aeff149e3c4476950225dd6d",
|
||||
"b30b02482da592925b6f4aa278ec82d6b30fe36f",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-contain/contain-size-003.html": [
|
||||
"1bce52c46a92dd0352209531a5cd697e1c7205f7",
|
||||
"95596c96910dcfb5fa2d5b5c4261ab910019929c",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-contain/contain-size-004.html": [
|
||||
|
@ -518356,7 +518377,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/css-contain/contain-size-006.html": [
|
||||
"f5c17152d98069f75d136cd526bcdd955e70983a",
|
||||
"f5a5faa49d3090ad2c088ac609e325a86d3d906e",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-contain/contain-size-007.html": [
|
||||
|
@ -518380,7 +518401,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/css-contain/contain-size-012.html": [
|
||||
"6823292fdf85f8fa96c22d82ab060d0e97eb37bb",
|
||||
"b80e605a32b50c51e75e6ea0eab386377ca94e37",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-contain/contain-size-013.html": [
|
||||
|
@ -518520,19 +518541,19 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/css-contain/quote-scoping-001.html": [
|
||||
"b440fdcd8ddea96089f418ea0f7e3bc64ae3acf0",
|
||||
"8c38e45b1ace138cbb795c77fdece555967e043d",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-contain/quote-scoping-002.html": [
|
||||
"d79ec2d7f3aeef3d17467c7d4a41879b15119dce",
|
||||
"9477afdfb1cf3073695a521c28cb9643a66bf00d",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-contain/quote-scoping-003.html": [
|
||||
"ee0420ee1a42ed47ef65eed8378b0aa0b91cd44c",
|
||||
"2a909511c3451c98bcdd059d506279923e6ce709",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-contain/quote-scoping-004.html": [
|
||||
"b31437003365b461dccbb554805c756c4b305f37",
|
||||
"d86382be08532323baad174808181e338adbc932",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-contain/reference/contain-layout-breaks-002-ref.html": [
|
||||
|
@ -518608,7 +518629,7 @@
|
|||
"support"
|
||||
],
|
||||
"css/css-contain/reference/contain-size-004-ref.html": [
|
||||
"3048d55f11a058ed951dea5bf2f940d27045ffed",
|
||||
"75ae2bcc2b2d8d019c979c86f2500f9a2ec6ab90",
|
||||
"support"
|
||||
],
|
||||
"css/css-contain/reference/contain-size-005-ref.html": [
|
||||
|
@ -518683,6 +518704,10 @@
|
|||
"49e7b85e878b78af41690bb815bb30a450820598",
|
||||
"support"
|
||||
],
|
||||
"css/css-contain/reference/pass_if_pass_below_clipped.html": [
|
||||
"044783d1e5488a612d46dca6397346619b539c7b",
|
||||
"support"
|
||||
],
|
||||
"css/css-contain/reference/quote-scoping-001-ref.html": [
|
||||
"0b0e9c467ac9ee3da86d1f9be0eff98c1f937b0b",
|
||||
"support"
|
||||
|
@ -534803,6 +534828,10 @@
|
|||
"bcb4e15d80c4225603ff59b92ccfc56dfc90d877",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-logical/animation-004.html": [
|
||||
"48cb58a29e4183d8e80527795b0000fb2f821bf3",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-logical/cascading-001-ref.html": [
|
||||
"79a432c4557bbda081a9b1c8d0dd9602c0eb85e5",
|
||||
"support"
|
||||
|
@ -577831,6 +577860,10 @@
|
|||
"60d88cffb517c0062db338e5ba89e98f7748c280",
|
||||
"testharness"
|
||||
],
|
||||
"custom-elements/range-and-constructors.html": [
|
||||
"d17c3b71480aa9dd2a75ccbc2cccfd362060eb3c",
|
||||
"testharness"
|
||||
],
|
||||
"custom-elements/reaction-timing.html": [
|
||||
"9e5bafbedfec42d28eb94c95ed84396941bc61ac",
|
||||
"testharness"
|
||||
|
@ -579400,7 +579433,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"dom/nodes/attributes.html": [
|
||||
"21188933ea43e7e84888c27bc603a5e2bb0bfaa1",
|
||||
"dac191b54cb2cafdaf9a71a297d130e571cd5230",
|
||||
"testharness"
|
||||
],
|
||||
"dom/nodes/attributes.js": [
|
||||
|
@ -589380,7 +589413,7 @@
|
|||
"support"
|
||||
],
|
||||
"html/dom/historical.html": [
|
||||
"a36b4b2e92b792b18fb8704d217a089ba07be254",
|
||||
"b79d35f0b8a383d026920d80d7374887f283a31b",
|
||||
"testharness"
|
||||
],
|
||||
"html/dom/interfaces.https.html": [
|
||||
|
@ -598944,7 +598977,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"html/semantics/forms/the-select-element/select-selectedOptions.html": [
|
||||
"f8e577a8a066e665468e3ebb7420f7c634657d3b",
|
||||
"6a5c75f2b147ece26f45c83581f5684d4746a4ab",
|
||||
"testharness"
|
||||
],
|
||||
"html/semantics/forms/the-select-element/select-setcustomvalidity.html": [
|
||||
|
@ -602323,6 +602356,10 @@
|
|||
"a3dbdc4e61aad00648c6b9ac34e22c08cbea12ce",
|
||||
"testharness"
|
||||
],
|
||||
"html/syntax/parsing/meta-inhead-insertion-mode.html": [
|
||||
"4317e4eb14a7fdb92e7ca5594f95e13158198417",
|
||||
"testharness"
|
||||
],
|
||||
"html/syntax/parsing/named-character-references-data.js": [
|
||||
"48ab30e4738feb1c95b2d4ad0a381c15c61e38d3",
|
||||
"support"
|
||||
|
@ -604248,7 +604285,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/SVG.idl": [
|
||||
"2ab3741d82f727efb1632bfc1a14611db8677cb8",
|
||||
"01d87b862b4167f79c43ed1b91ef772f5a78f5fe",
|
||||
"support"
|
||||
],
|
||||
"interfaces/WebCryptoAPI.idl": [
|
||||
|
@ -604280,7 +604317,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/background-fetch.idl": [
|
||||
"fc3ed8dad3555a93221c6c7aa1cae0fbc7a6b402",
|
||||
"6957604e7df5bed1c6ec0351ebe838d28773e3fe",
|
||||
"support"
|
||||
],
|
||||
"interfaces/battery-status.idl": [
|
||||
|
@ -604352,7 +604389,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/css-paint-api.idl": [
|
||||
"442bbfac1585768d6df64b48960f35a41b7546be",
|
||||
"c636e2e7d3771fa4d0fb0df06088885552da6e00",
|
||||
"support"
|
||||
],
|
||||
"interfaces/css-properties-values-api.idl": [
|
||||
|
@ -604716,7 +604753,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/webrtc.idl": [
|
||||
"2849a7d2b272d411dc0eddb134739e4f00ce05cc",
|
||||
"c06e91e6de7b1f44e5f92e2c8eb1d0fabb792b7d",
|
||||
"support"
|
||||
],
|
||||
"interfaces/webusb.idl": [
|
||||
|
@ -607959,10 +607996,6 @@
|
|||
"851691d6c49808393376486e2616ce8d18075b18",
|
||||
"support"
|
||||
],
|
||||
"navigation-timing/nav2_idlharness.html": [
|
||||
"6d1a1249b91ab555df5cf7521935ce229b5a66ab",
|
||||
"testharness"
|
||||
],
|
||||
"navigation-timing/nav2_test_attributes_exist.html": [
|
||||
"b6048e061ba057cd971b08e032be717f0ad04d0d",
|
||||
"testharness"
|
||||
|
@ -631764,7 +631797,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"svg/idlharness.window.js": [
|
||||
"e08adf8978731b7c491c1f26e0edcd05c331f2a3",
|
||||
"46e8aaee6afa6b67a2fb515d5155849dea214c00",
|
||||
"testharness"
|
||||
],
|
||||
"svg/import/animate-dom-01-f-manual.svg": [
|
||||
|
@ -634160,7 +634193,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"svg/painting/reftests/paint-order-001-ref.svg": [
|
||||
"6e1e016f6f5aa6bff5ca249d75e7b9dce8d11e12",
|
||||
"7822a80b942fee54a87106d7def13429454cc26e",
|
||||
"support"
|
||||
],
|
||||
"svg/painting/reftests/paint-order-001.svg": [
|
||||
|
@ -640124,7 +640157,7 @@
|
|||
"support"
|
||||
],
|
||||
"tools/wptserve/setup.py": [
|
||||
"194c3372c94a0f38c1616566fa546b4dadf0166f",
|
||||
"c9c364b8bacc72a6ff77f9d0c811b2d7d1810d13",
|
||||
"support"
|
||||
],
|
||||
"tools/wptserve/tests/functional/__init__.py": [
|
||||
|
@ -640543,6 +640576,10 @@
|
|||
"3bf23b4c230749355607b3af6c1a3bdcc256cf19",
|
||||
"support"
|
||||
],
|
||||
"uievents/idlharness.window.js": [
|
||||
"928c8c90f0ff4ed99fdec8183cb129bbbea82f3e",
|
||||
"testharness"
|
||||
],
|
||||
"uievents/interface/README.md": [
|
||||
"970fdd4df3517297e344019930d88fbb53b1a002",
|
||||
"support"
|
||||
|
@ -640559,10 +640596,6 @@
|
|||
"7ea0bdbf138d2fbcd319db2967dca81602bfb74a",
|
||||
"manual"
|
||||
],
|
||||
"uievents/interfaces.html": [
|
||||
"0d20f1d71010fdf097b652b7a1c32285e4dfa112",
|
||||
"testharness"
|
||||
],
|
||||
"uievents/keyboard/README.md": [
|
||||
"38c454dd7c33eefc14022434505321f29dfb4917",
|
||||
"support"
|
||||
|
@ -641327,8 +641360,8 @@
|
|||
"64e6e9b548233809b217c03e2709f7fbf12fdce9",
|
||||
"manual"
|
||||
],
|
||||
"vibration/idl.html": [
|
||||
"167090cd67b0169501a6b0b16f8101e8b2b04f84",
|
||||
"vibration/idlharness.window.js": [
|
||||
"fbe14daa6119a8213ca58e2233345af015353a1b",
|
||||
"testharness"
|
||||
],
|
||||
"vibration/invalid-values.html": [
|
||||
|
@ -643875,6 +643908,10 @@
|
|||
"e7ccefc655364d20bb240beacc81a4f7a10806dd",
|
||||
"testharness"
|
||||
],
|
||||
"webaudio/the-audio-api/the-delaynode-interface/delaynode-channel-count-1.html": [
|
||||
"dd964ef9e36b1fb46f58c570d8337917541d80d1",
|
||||
"testharness"
|
||||
],
|
||||
"webaudio/the-audio-api/the-delaynode-interface/delaynode-max-default-delay.html": [
|
||||
"ef526c96ffcfc2d420b421ab63d02d9a5486f3cc",
|
||||
"testharness"
|
||||
|
@ -647315,8 +647352,8 @@
|
|||
"8f6c09bf526e462f67563601214c3987b31fe098",
|
||||
"testharness"
|
||||
],
|
||||
"webvtt/api/interfaces.html": [
|
||||
"5222256d617df55f19a9453c6783d59d183fcef7",
|
||||
"webvtt/api/idlharness.window.js": [
|
||||
"53c1ded67493685fb0a7279fa2994bba598c4fd3",
|
||||
"testharness"
|
||||
],
|
||||
"webvtt/categories.json": [
|
||||
|
@ -652204,7 +652241,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"xhr/overridemimetype-edge-cases.window.js": [
|
||||
"6dfe755b767e78b60d0828c29d2b9c57e82e3be7",
|
||||
"192a696759c4b82852eee753f417fb8a4cf2718d",
|
||||
"testharness"
|
||||
],
|
||||
"xhr/overridemimetype-headers-received-state-force-shiftjis.htm": [
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[vh_not_refreshing_on_chrome.html]
|
||||
expected: FAIL
|
|
@ -3,7 +3,7 @@
|
|||
disabled: iframe thread issue 5247
|
||||
|
||||
[single-byte-decoder.html?document]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
|
||||
[single-byte-decoder.html?XMLHttpRequest]
|
||||
expected: CRASH
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
[traverse_the_history_4.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
|
@ -30,6 +30,3 @@
|
|||
[Set HTTP URL frame location.protocol to data]
|
||||
expected: FAIL
|
||||
|
||||
[Set HTTP URL frame location.protocol to x]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -3,3 +3,9 @@
|
|||
[document.all cannot find applet]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableHeaderCellElement interface is removed]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableDataCellElement interface is removed]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[meta-inhead-insertion-mode.html]
|
||||
[Encoding specified in the 'charset' attribute should have precedence over 'content' attribute.]
|
||||
expected: FAIL
|
||||
|
4
tests/wpt/metadata/uievents/idlharness.window.js.ini
Normal file
4
tests/wpt/metadata/uievents/idlharness.window.js.ini
Normal file
|
@ -0,0 +1,4 @@
|
|||
[idlharness.window.html]
|
||||
[idlharness]
|
||||
expected: FAIL
|
||||
|
|
@ -5,29 +5,26 @@
|
|||
[response.formData() with input: a&b&c]
|
||||
expected: FAIL
|
||||
|
||||
[request.formData() with input: _charset_=windows-1252&test=%C2x]
|
||||
[response.formData() with input: a=b&c=d&]
|
||||
expected: FAIL
|
||||
|
||||
[request.formData() with input: a=b&c=d&]
|
||||
[response.formData() with input: _charset_=windows-1252&test=%C2x]
|
||||
expected: FAIL
|
||||
|
||||
[response.formData() with input: a=b&c=d]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[urlencoded-parser.any.worker.html]
|
||||
[response.formData() with input: a&b&c]
|
||||
expected: FAIL
|
||||
|
||||
[request.formData() with input: a&b&c]
|
||||
expected: FAIL
|
||||
|
||||
[response.formData() with input: &&&a=b&&&&c=d&]
|
||||
[request.formData() with input: a=b&c=d]
|
||||
expected: FAIL
|
||||
|
||||
[request.formData() with input: a=b&c=d&]
|
||||
[response.formData() with input: _charset_=windows-1252&test=%C2x]
|
||||
expected: FAIL
|
||||
|
||||
[request.formData() with input: &&&a=b&&&&c=d&]
|
||||
expected: FAIL
|
||||
|
||||
[request.formData() with input: _charset_=windows-1252&test=%C2x]
|
||||
[response.formData() with input: a=b&c=d]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[delaynode-channel-count-1.html]
|
||||
[Test that DelayNode output channelCount matches that of the delayed input]
|
||||
expected: FAIL
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
[005.html]
|
||||
type: testharness
|
||||
expected: ERROR
|
||||
[dedicated worker in shared worker in dedicated worker]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[complex-glsl-does-not-crash.html]
|
||||
expected: TIMEOUT
|
||||
[Overall test]
|
||||
expected: NOTRUN
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[shader-uniform-packing-restrictions.html]
|
||||
expected: TIMEOUT
|
||||
[Overall test]
|
||||
expected: NOTRUN
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[shader-with-non-reserved-words.html]
|
||||
expected: TIMEOUT
|
||||
[Overall test]
|
||||
expected: NOTRUN
|
||||
|
|
@ -74,7 +74,7 @@ backgroundFetchTest(async (test, backgroundFetch) => {
|
|||
// Skip `downloaded`, as the transfer may have started already.
|
||||
|
||||
const {type, results} = await getMessageFromServiceWorker();
|
||||
assert_equals('backgroundfetched', type);
|
||||
assert_equals('backgroundfetchsuccess', type);
|
||||
assert_equals(results.length, 1);
|
||||
|
||||
assert_true(results[0].url.includes('resources/feature-name.txt'));
|
||||
|
|
|
@ -2,7 +2,7 @@ importScripts('sw-helpers.js');
|
|||
|
||||
async function updateUI(event) {
|
||||
let updateParams = [];
|
||||
switch (event.id) {
|
||||
switch (event.registration.id) {
|
||||
case 'update-once':
|
||||
updateParams = [{title: 'Title1'}];
|
||||
break;
|
||||
|
@ -16,7 +16,7 @@ async function updateUI(event) {
|
|||
.catch(e => e.message);
|
||||
}
|
||||
|
||||
self.addEventListener('backgroundfetched', event => {
|
||||
self.addEventListener('backgroundfetchsuccess', event => {
|
||||
event.waitUntil(updateUI(event)
|
||||
.then(update => sendMessageToDocument({ type: event.type, update })))
|
||||
});
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
importScripts('sw-helpers.js');
|
||||
|
||||
async function getFetchResult(settledFetch) {
|
||||
|
@ -11,7 +12,7 @@ async function getFetchResult(settledFetch) {
|
|||
};
|
||||
}
|
||||
|
||||
self.addEventListener('backgroundfetched', event => {
|
||||
self.addEventListener('backgroundfetchsuccess', event => {
|
||||
event.waitUntil(
|
||||
event.fetches.values()
|
||||
.then(fetches => Promise.all(fetches.map(fetch => getFetchResult(fetch))))
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
// META: script=resources/utils.js
|
||||
'use strict';
|
||||
|
||||
// Covers functionality provided by BackgroundFetchUpdateEvent.updateUI().
|
||||
// Covers functionality provided by BackgroundFetchUpdateUIEvent.updateUI().
|
||||
//
|
||||
// https://wicg.github.io/background-fetch/#backgroundfetchupdateuievent
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
.then(t.step_func(e => {
|
||||
assert_equals(e.blockedURI, "inline");
|
||||
assert_equals(e.lineNumber, 131);
|
||||
assert_equals(e.columnNumber, 4);
|
||||
assert_in_array(e.columnNumber, [4, 59]);
|
||||
assert_equals(e.target, document, "Elements created in this document, but pushed into a same-origin frame trigger on that frame's document, not on this frame's document.");
|
||||
return watcher.wait_for('securitypolicyviolation');
|
||||
}))
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
|
||||
<meta name=flags content="">
|
||||
<meta name=assert content="size containment does not apply to non atomic inlines">
|
||||
<link rel="match" href="../reference/pass_if_pass_below.html">
|
||||
<link rel="match" href="reference/pass_if_pass_below_clipped.html">
|
||||
<link rel=help href="https://drafts.csswg.org/css-contain-1/#containment-size">
|
||||
|
||||
<style>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
|
||||
<meta name=flags content="">
|
||||
<meta name=assert content="size containment does not to apply ruby-base, which is an internal ruby element">
|
||||
<link rel="match" href="../reference/pass_if_pass_below.html">
|
||||
<link rel="match" href="reference/pass_if_pass_below_clipped.html">
|
||||
<link rel=help href="https://drafts.csswg.org/css-contain-1/#containment-size">
|
||||
<link rel=help href="https://drafts.csswg.org/css-display-3/#internal-ruby-element">
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
|
||||
<meta name=flags content="">
|
||||
<meta name=assert content="size containment does not to apply ruby-base-container, which is an internal ruby element">
|
||||
<link rel="match" href="../reference/pass_if_pass_below.html">
|
||||
<link rel="match" href="reference/pass_if_pass_below_clipped.html">
|
||||
<link rel=help href="https://drafts.csswg.org/css-contain-1/#containment-size">
|
||||
<link rel=help href="https://drafts.csswg.org/css-display-3/#internal-ruby-element">
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<title>CSS Containment Test: Size containment on table-cell</title>
|
||||
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-size">
|
||||
<link rel="match" href="../reference/pass_if_pass_below.html">
|
||||
<link rel="match" href="reference/pass_if_pass_below_clipped.html">
|
||||
<meta name=assert content="Size containment doesn't apply to table-cell elements.">
|
||||
<style>
|
||||
div {
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<title>CSS Containment Test: Size containment on table</title>
|
||||
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-size">
|
||||
<link rel="match" href="../reference/pass_if_pass_below.html">
|
||||
<link rel="match" href="reference/pass_if_pass_below_clipped.html">
|
||||
<meta name=assert content="Size containment doesn't apply to table elements.">
|
||||
<style>
|
||||
div {
|
||||
|
|
|
@ -19,7 +19,7 @@ div::before, span::before {
|
|||
div::after {
|
||||
content: close-quote;
|
||||
}
|
||||
div {
|
||||
span {
|
||||
contain: style;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -19,10 +19,10 @@ div::before {
|
|||
div::after, span::after {
|
||||
content: close-quote;
|
||||
}
|
||||
div {
|
||||
span {
|
||||
contain: style;
|
||||
}
|
||||
</style>
|
||||
|
||||
<p>Test passes if the text below is "A9Z" (not including the quotation marks).<p>
|
||||
<p>Test passes if the text below is "AZZ" (not including the quotation marks).<p>
|
||||
<div><span></span></div>
|
||||
|
|
|
@ -23,7 +23,7 @@ span::before {
|
|||
div::after {
|
||||
content: close-quote;
|
||||
}
|
||||
div {
|
||||
span {
|
||||
contain: style;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -23,7 +23,7 @@ span::after {
|
|||
div::after {
|
||||
content: close-quote;
|
||||
}
|
||||
div {
|
||||
span {
|
||||
contain: style;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -9,6 +9,9 @@ rtc {
|
|||
display: ruby-text-container;
|
||||
font-size: 1rem;
|
||||
}
|
||||
div {
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
|
||||
<p>This test passes if you can see the word PASS below.
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Reference rendering - passes if there is the word "PASS" below</title>
|
||||
<style>
|
||||
div { overflow: hidden; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test passes if there is the word "PASS" below.</p>
|
||||
<div>PASS</div>
|
||||
</body>
|
||||
</html>
|
250
tests/wpt/web-platform-tests/css/css-logical/animation-004.html
Normal file
250
tests/wpt/web-platform-tests/css/css-logical/animation-004.html
Normal file
|
@ -0,0 +1,250 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>Animating CSS logical properties using CSS Transitions</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-logical/#box">
|
||||
<meta name="assert" content="The specified values of these properties are separate from the specified values of the parallel physical properties, but the flow-relative and physical properties share computed values.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="../css-animations/support/testcommon.js"></script>
|
||||
|
||||
<div id="log"></div>
|
||||
<div id="test"></div>
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
const testEl = document.getElementById("test");
|
||||
|
||||
function makeDeclaration(object = {}) {
|
||||
return Object.entries(object).map(([prop, val]) => prop + ": " + val).join("; ");
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts a CSS transition in testEl. By default, the transition will affect the properies
|
||||
* specified in finalStyles, be linear, last 10 seconds and start halfway, but this can be
|
||||
* overridden in baseStyles.
|
||||
*
|
||||
* @param t The testharness.js Test object.
|
||||
* @param baseStyles A dictionary object with property names and values to set on the
|
||||
* element before starting the transition.
|
||||
* @param finalStyles A dictionary object with property names and values towards which
|
||||
* the element will transition.
|
||||
*/
|
||||
function transition(t, baseStyles, finalStyles) {
|
||||
// Clear styles from previous test.
|
||||
testEl.style.cssText = "";
|
||||
testEl.className = "";
|
||||
getComputedStyle(testEl).height;
|
||||
|
||||
// Set base styles
|
||||
const defaultTransition = {
|
||||
"transition-property": Object.keys(finalStyles).join(", "),
|
||||
"transition-timing-function": "linear",
|
||||
"transition-duration": "10s",
|
||||
"transition-delay": "-5s",
|
||||
};
|
||||
addStyle(t, {
|
||||
"#test": makeDeclaration(Object.assign(defaultTransition, baseStyles)),
|
||||
"#test.transition": makeDeclaration(finalStyles),
|
||||
});
|
||||
getComputedStyle(testEl).height;
|
||||
|
||||
// Start the transition
|
||||
testEl.className = "transition";
|
||||
}
|
||||
|
||||
test(t => {
|
||||
transition(t, {
|
||||
"block-size": "0px",
|
||||
}, {
|
||||
"block-size": "100px",
|
||||
});
|
||||
assert_equals(getComputedStyle(testEl).height, '50px');
|
||||
}, 'Logical properties can be transitioned');
|
||||
|
||||
test(t => {
|
||||
transition(t, {
|
||||
"block-size": "0px",
|
||||
"writing-mode": "vertical-rl",
|
||||
}, {
|
||||
"block-size": "100px",
|
||||
});
|
||||
assert_equals(getComputedStyle(testEl).width, '50px');
|
||||
assert_equals(getComputedStyle(testEl).height, '0px');
|
||||
}, 'Logical properties in transitions respect the writing-mode');
|
||||
|
||||
test(t => {
|
||||
transition(t, {
|
||||
"margin-inline-start": "0px",
|
||||
"direction": "rtl",
|
||||
}, {
|
||||
"margin-inline-start": "100px",
|
||||
});
|
||||
assert_equals(getComputedStyle(testEl).marginLeft, '0px');
|
||||
assert_equals(getComputedStyle(testEl).marginRight, '50px');
|
||||
}, 'Logical properties in transitions respect the direction');
|
||||
|
||||
test(t => {
|
||||
transition(t, {
|
||||
"block-size": "0px",
|
||||
"height": "200px",
|
||||
}, {
|
||||
"block-size": "100px",
|
||||
"height": "300px",
|
||||
});
|
||||
assert_equals(getComputedStyle(testEl).height, '250px');
|
||||
}, 'Declaration order is respected within declaration blocks');
|
||||
|
||||
test(t => {
|
||||
transition(t, {
|
||||
"transition-timing-function": "step-start",
|
||||
}, {
|
||||
"margin-top": "200px",
|
||||
"margin-block-start": "100px"
|
||||
});
|
||||
assert_equals(getComputedStyle(testEl).marginTop, '100px');
|
||||
}, 'Logical properties are able to override physical properties in declaration blocks');
|
||||
|
||||
test(t => {
|
||||
transition(t, {
|
||||
"transition-timing-function": "step-start",
|
||||
}, {
|
||||
"margin-inline": "200px",
|
||||
"margin-inline-start": "0px",
|
||||
"margin-inline-start": "100px",
|
||||
});
|
||||
assert_equals(getComputedStyle(testEl).marginLeft, '100px');
|
||||
}, 'Declaration order is respected amongst logical properties within declaration blocks');
|
||||
|
||||
test(t => {
|
||||
transition(t, {
|
||||
"block-size": "200px",
|
||||
}, {
|
||||
"height": "300px",
|
||||
});
|
||||
assert_equals(getComputedStyle(testEl).height, '250px');
|
||||
}, 'Physical properties and logical properties can be mixed');
|
||||
|
||||
test(t => {
|
||||
transition(t, {
|
||||
"height": "100px",
|
||||
"block-size": "200px",
|
||||
}, {
|
||||
"block-size": "100px",
|
||||
"height": "300px",
|
||||
});
|
||||
assert_equals(getComputedStyle(testEl).height, '250px');
|
||||
}, 'Declaration order is respected on each keyframe individually');
|
||||
|
||||
test(t => {
|
||||
transition(t, {
|
||||
"width": "0px",
|
||||
"height": "0px",
|
||||
"block-size": "0px",
|
||||
}, {
|
||||
"block-size": "100px",
|
||||
});
|
||||
assert_equals(getComputedStyle(testEl).width, '0px');
|
||||
assert_equals(getComputedStyle(testEl).height, '50px');
|
||||
|
||||
testEl.style.writingMode = 'vertical-rl';
|
||||
assert_equals(getComputedStyle(testEl).width, '50px');
|
||||
assert_equals(getComputedStyle(testEl).height, '0px');
|
||||
}, 'Transitions update when the writing-mode is changed');
|
||||
|
||||
promise_test(async t => {
|
||||
transition(t, {
|
||||
"transition-delay": "-9.9s",
|
||||
"width": "0px",
|
||||
"height": "0px",
|
||||
"block-size": "0px",
|
||||
}, {
|
||||
"block-size": "100px",
|
||||
});
|
||||
const watcher = new EventWatcher(t, testEl, [ 'transitionend' ]);
|
||||
await watcher.wait_for('transitionend');
|
||||
|
||||
assert_equals(getComputedStyle(testEl).width, '0px');
|
||||
assert_equals(getComputedStyle(testEl).height, '100px');
|
||||
|
||||
testEl.style.transition = 'none';
|
||||
testEl.style.writingMode = 'vertical-rl';
|
||||
assert_equals(getComputedStyle(testEl).width, '100px');
|
||||
assert_equals(getComputedStyle(testEl).height, '0px');
|
||||
}, 'Filling transitions update when the writing-mode is changed');
|
||||
|
||||
test(t => {
|
||||
transition(t, {
|
||||
"width": "0px",
|
||||
"height": "0px",
|
||||
}, {
|
||||
"block-size": "100px",
|
||||
"height": "200px",
|
||||
});
|
||||
|
||||
// Initially we are interpolating the height from 0 to 200px
|
||||
assert_equals(getComputedStyle(testEl).width, '0px');
|
||||
assert_equals(getComputedStyle(testEl).height, '100px');
|
||||
|
||||
// But once we change the writing-mode, we will be interpolating *both*
|
||||
// the height (from 0px to 200px) *and* the width (from 0px to 100px).
|
||||
testEl.style.writingMode = 'vertical-rl';
|
||||
assert_equals(getComputedStyle(testEl).width, '50px');
|
||||
assert_equals(getComputedStyle(testEl).height, '100px');
|
||||
}, 'The number of interpolating properties can be increased when the'
|
||||
+ ' writing-mode is changed');
|
||||
|
||||
test(t => {
|
||||
transition(t, {
|
||||
"width": "100px",
|
||||
"height": "100px",
|
||||
}, {
|
||||
"width": "500px",
|
||||
"block-size": "200px",
|
||||
});
|
||||
|
||||
// Initially we are interpolating the width (100px -> 500px) and the height
|
||||
// (100px -> 200px).
|
||||
assert_equals(getComputedStyle(testEl).width, '300px');
|
||||
assert_equals(getComputedStyle(testEl).height, '150px');
|
||||
|
||||
// Once we change the writing-mode, we will be interpolating *only* the
|
||||
// width (300px -> 200px).
|
||||
testEl.style.writingMode = 'vertical-rl';
|
||||
assert_equals(getComputedStyle(testEl).width, '250px');
|
||||
assert_equals(getComputedStyle(testEl).height, '100px');
|
||||
}, 'The number of interpolating properties can be decreased when the'
|
||||
+ ' writing-mode is changed');
|
||||
|
||||
test(t => {
|
||||
addStyle(t, { ':root': '--writingMode: horizontal-tb' });
|
||||
transition(t, {
|
||||
"width": "0px",
|
||||
"height": "0px",
|
||||
"writing-mode": "var(--writingMode)",
|
||||
"block-size": "0px",
|
||||
}, {
|
||||
"block-size": "100px"
|
||||
});
|
||||
assert_equals(getComputedStyle(testEl).width, '0px');
|
||||
assert_equals(getComputedStyle(testEl).height, '50px');
|
||||
|
||||
testEl.style.setProperty('--writingMode', 'vertical-rl');
|
||||
assert_equals(getComputedStyle(testEl).width, '50px');
|
||||
assert_equals(getComputedStyle(testEl).height, '0px');
|
||||
}, 'Transitions update when the writing-mode is changed through a CSS variable');
|
||||
|
||||
test(t => {
|
||||
transition(t, {
|
||||
"margin-inline-start": "0px",
|
||||
}, {
|
||||
"margin-inline-start": "100px",
|
||||
});
|
||||
assert_equals(getComputedStyle(testEl).marginLeft, '50px');
|
||||
assert_equals(getComputedStyle(testEl).marginRight, '0px');
|
||||
|
||||
testEl.style.direction = 'rtl';
|
||||
assert_equals(getComputedStyle(testEl).marginLeft, '0px');
|
||||
assert_equals(getComputedStyle(testEl).marginRight, '50px');
|
||||
}, 'Transitions update when the direction is changed');
|
||||
|
||||
</script>
|
|
@ -0,0 +1,61 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Custom elements: Range APIs should invoke constructor in tree order</title>
|
||||
<meta name="author" title="Edgar Chen" href="mailto:echen@mozilla.com">
|
||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/scripting.html#concept-upgrade-an-element">
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#concept-create-element">
|
||||
<line rel="help" href="https://dom.spec.whatwg.org/#concept-range-extract">
|
||||
<line rel="help" href="https://dom.spec.whatwg.org/#concept-range-clone">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="log"></div>
|
||||
|
||||
<c-e data-index="root">
|
||||
<c-e data-index="root-0">
|
||||
<c-e data-index="root-0-0">
|
||||
<c-e data-index="root-0-0-0"></c-e>
|
||||
<span id="start"></span>
|
||||
</c-e>
|
||||
</c-e>
|
||||
<c-e data-index="root-1"></c-e>
|
||||
<span id="end"></span>
|
||||
</c-e>
|
||||
|
||||
<script>
|
||||
|
||||
var logs = [];
|
||||
class CE extends HTMLElement {
|
||||
constructor() {
|
||||
super();
|
||||
logs.push(this.dataset.index);
|
||||
}
|
||||
}
|
||||
customElements.define('c-e', CE);
|
||||
|
||||
function getRange() {
|
||||
const range = new Range();
|
||||
range.setStart(document.getElementById('start'), 0);
|
||||
range.setEnd(document.getElementById('end'), 0);
|
||||
return range;
|
||||
}
|
||||
|
||||
test(function () {
|
||||
// Clear log for testing.
|
||||
logs = [];
|
||||
getRange().cloneContents();
|
||||
assert_array_equals(logs, ['root-0', 'root-0-0', 'root-1']);
|
||||
}, 'Range.cloneContents should invoke constructor in tree order');
|
||||
|
||||
test(function () {
|
||||
// Clear log for testing.
|
||||
logs = [];
|
||||
getRange().extractContents();
|
||||
assert_array_equals(logs, ['root-0', 'root-0-0']);
|
||||
}, 'Range.extractContents should invoke constructor in tree order');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -604,7 +604,7 @@ test(function() {
|
|||
test(function() {
|
||||
var el = document.createElement("div");
|
||||
var other = document.createElement("div");
|
||||
attr = document.createAttribute("foo");
|
||||
var attr = document.createAttribute("foo");
|
||||
assert_equals(el.setAttributeNode(attr), null);
|
||||
assert_equals(attr.ownerElement, el);
|
||||
assert_throws("INUSE_ATTRIBUTE_ERR",
|
||||
|
@ -614,7 +614,7 @@ test(function() {
|
|||
|
||||
test(function() {
|
||||
var el = document.createElement("div");
|
||||
attr = document.createAttribute("foo");
|
||||
var attr = document.createAttribute("foo");
|
||||
assert_equals(el.setAttributeNode(attr), null);
|
||||
el.setAttribute("bar", "qux");
|
||||
assert_equals(el.setAttributeNode(attr), attr);
|
||||
|
|
|
@ -30,4 +30,13 @@ test(() => {
|
|||
test(() => {
|
||||
assert_equals(self.getComputedStyle(document.getElementsByTagName("applet")[0], "").cssFloat, "none");
|
||||
}, "applet is not styled")
|
||||
|
||||
// removed in https://github.com/whatwg/html/commit/e383ae23776362cafb2fb4bbba70c8c9080d4b0f
|
||||
test(() => {
|
||||
assert_false("HTMLTableDataCellElement" in window);
|
||||
}, "HTMLTableDataCellElement interface is removed")
|
||||
|
||||
test(() => {
|
||||
assert_false("HTMLTableHeaderCellElement" in window);
|
||||
}, "HTMLTableHeaderCellElement interface is removed")
|
||||
</script>
|
||||
|
|
|
@ -114,12 +114,15 @@ test(() => {
|
|||
test(() => {
|
||||
const select = document.getElementById("select-same-object-change");
|
||||
const before = select.selectedOptions;
|
||||
assert_equals(before.length, 3);
|
||||
|
||||
select.selectedOptions[1].selected = false;
|
||||
|
||||
const after = select.selectedOptions;
|
||||
|
||||
assert_equals(before, after);
|
||||
assert_equals(before.length, 2);
|
||||
assert_equals(after.length, 2);
|
||||
|
||||
}, ".selectedOptions should return the same object after selection changes - [SameObject]");
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Encoding specified in the "charset" attribute should have precedence over "content" attribute.</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r" charset="iso-8859-15">
|
||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inhead">
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script>
|
||||
test(function () {
|
||||
assert_equals(document.characterSet, "ISO-8859-15");
|
||||
}, "Encoding specified in the 'charset' attribute should have precedence over 'content' attribute.");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -673,11 +673,16 @@ SVGScriptElement includes SVGURIReference;
|
|||
[Exposed=Window]
|
||||
interface SVGAElement : SVGGraphicsElement {
|
||||
[SameObject] readonly attribute SVGAnimatedString target;
|
||||
[SameObject] readonly attribute SVGAnimatedString download;
|
||||
[SameObject] readonly attribute SVGAnimatedString rel;
|
||||
[SameObject] readonly attribute SVGAnimatedString relList;
|
||||
[SameObject] readonly attribute SVGAnimatedString hreflang;
|
||||
[SameObject] readonly attribute SVGAnimatedString type;
|
||||
attribute DOMString download;
|
||||
attribute USVString ping;
|
||||
attribute DOMString rel;
|
||||
[SameObject, PutsForward=value] readonly attribute DOMTokenList relList;
|
||||
attribute DOMString hreflang;
|
||||
attribute DOMString type;
|
||||
|
||||
attribute DOMString text;
|
||||
|
||||
attribute DOMString referrerPolicy;
|
||||
};
|
||||
|
||||
SVGAElement includes SVGURIReference;
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
// GENERATED CONTENT - DO NOT EDIT
|
||||
// Content of this file was automatically extracted from the
|
||||
// "Background Fetch" spec.
|
||||
// See: https://wicg.github.io/background-fetch/
|
||||
// Content was automatically extracted by Reffy into reffy-reports
|
||||
// (https://github.com/tidoust/reffy-reports)
|
||||
// Source: Background Fetch (https://wicg.github.io/background-fetch/)
|
||||
|
||||
partial interface ServiceWorkerGlobalScope {
|
||||
attribute EventHandler onbackgroundfetched;
|
||||
attribute EventHandler onbackgroundfetchsuccess;
|
||||
attribute EventHandler onbackgroundfetchfail;
|
||||
attribute EventHandler onbackgroundfetchabort;
|
||||
attribute EventHandler onbackgroundfetchclick;
|
||||
|
@ -22,9 +22,12 @@ interface BackgroundFetchManager {
|
|||
// TODO: in future this should become an async iterator for BackgroundFetchRegistration objects
|
||||
};
|
||||
|
||||
dictionary BackgroundFetchOptions {
|
||||
dictionary BackgroundFetchUIOptions {
|
||||
sequence<IconDefinition> icons = [];
|
||||
DOMString title = "";
|
||||
};
|
||||
|
||||
dictionary BackgroundFetchOptions : BackgroundFetchUIOptions {
|
||||
unsigned long long downloadTotal = 0;
|
||||
};
|
||||
|
||||
|
@ -43,73 +46,50 @@ interface BackgroundFetchRegistration : EventTarget {
|
|||
readonly attribute unsigned long long uploaded;
|
||||
readonly attribute unsigned long long downloadTotal;
|
||||
readonly attribute unsigned long long downloaded;
|
||||
readonly attribute BackgroundFetchActiveFetches activeFetches;
|
||||
readonly attribute BackgroundFetchState state;
|
||||
readonly attribute BackgroundFetchFailureReason failureReason;
|
||||
|
||||
attribute EventHandler onprogress;
|
||||
|
||||
Promise<boolean> abort();
|
||||
Promise<BackgroundFetchRecord> match(RequestInfo request, optional CacheQueryOptions options);
|
||||
Promise<sequence<BackgroundFetchRecord>> matchAll(optional RequestInfo request, optional CacheQueryOptions options);
|
||||
};
|
||||
|
||||
enum BackgroundFetchState { "pending", "success", "failure" };
|
||||
|
||||
enum BackgroundFetchFailureReason {
|
||||
"",
|
||||
// The operation was aborted by the user, or abort() was called.
|
||||
"aborted",
|
||||
// A response had a not-ok-status.
|
||||
"bad-status",
|
||||
// A fetch failed for other reasons, e.g. CORS, MIX, an invalid partial response,
|
||||
// or a general network failure for a fetch that cannot be retried.
|
||||
"fetch-error",
|
||||
// Storage quota was reached during the operation.
|
||||
"quota-exceeded",
|
||||
// The provided downloadTotal was exceeded.
|
||||
"total-download-exceeded"
|
||||
};
|
||||
|
||||
[Exposed=(Window,Worker)]
|
||||
interface BackgroundFetchActiveFetches {
|
||||
Promise<BackgroundFetchActiveFetch> match(RequestInfo request, optional CacheQueryOptions options);
|
||||
Promise<sequence<BackgroundFetchActiveFetch>> matchAll(RequestInfo request, optional CacheQueryOptions options);
|
||||
Promise<sequence<BackgroundFetchActiveFetch>> values();
|
||||
};
|
||||
|
||||
[Exposed=(Window,Worker)]
|
||||
interface BackgroundFetchActiveFetch : BackgroundFetchFetch {
|
||||
readonly attribute Promise<Response> responseReady;
|
||||
// In future this will include a fetch observer
|
||||
};
|
||||
|
||||
[Exposed=(Window,Worker)]
|
||||
interface BackgroundFetchFetch {
|
||||
interface BackgroundFetchRecord {
|
||||
readonly attribute Request request;
|
||||
readonly attribute Promise<Response> responseReady;
|
||||
// TODO: In future this will include a fetch observer
|
||||
};
|
||||
|
||||
[Constructor(DOMString type, BackgroundFetchEventInit init), Exposed=ServiceWorker]
|
||||
interface BackgroundFetchEvent : ExtendableEvent {
|
||||
readonly attribute DOMString id;
|
||||
readonly attribute BackgroundFetchRegistration registration;
|
||||
};
|
||||
|
||||
dictionary BackgroundFetchEventInit : ExtendableEventInit {
|
||||
required DOMString id;
|
||||
required BackgroundFetchRegistration registration;
|
||||
};
|
||||
|
||||
[Constructor(DOMString type, BackgroundFetchSettledEventInit init), Exposed=ServiceWorker]
|
||||
interface BackgroundFetchSettledEvent : BackgroundFetchEvent {
|
||||
readonly attribute BackgroundFetchSettledFetches fetches;
|
||||
[Constructor(DOMString type, BackgroundFetchEventInit init), Exposed=ServiceWorker]
|
||||
interface BackgroundFetchUpdateUIEvent : BackgroundFetchEvent {
|
||||
Promise<void> updateUI(optional BackgroundFetchUIOptions options);
|
||||
};
|
||||
|
||||
dictionary BackgroundFetchSettledEventInit : BackgroundFetchEventInit {
|
||||
required BackgroundFetchSettledFetches fetches;
|
||||
};
|
||||
|
||||
[Exposed=ServiceWorker]
|
||||
interface BackgroundFetchSettledFetches {
|
||||
Promise<BackgroundFetchSettledFetch> match(RequestInfo request, optional CacheQueryOptions options);
|
||||
Promise<sequence<BackgroundFetchSettledFetch>> matchAll(RequestInfo request, optional CacheQueryOptions options);
|
||||
Promise<sequence<BackgroundFetchSettledFetch>> values();
|
||||
};
|
||||
|
||||
[Exposed=ServiceWorker]
|
||||
interface BackgroundFetchSettledFetch : BackgroundFetchFetch {
|
||||
readonly attribute Response? response;
|
||||
};
|
||||
|
||||
[Constructor(DOMString type, BackgroundFetchSettledEventInit init), Exposed=ServiceWorker]
|
||||
interface BackgroundFetchUpdateEvent : BackgroundFetchSettledEvent {
|
||||
Promise<void> updateUI(DOMString title);
|
||||
};
|
||||
|
||||
[Constructor(DOMString type, BackgroundFetchClickEventInit init), Exposed=ServiceWorker]
|
||||
interface BackgroundFetchClickEvent : BackgroundFetchEvent {
|
||||
readonly attribute BackgroundFetchState state;
|
||||
};
|
||||
|
||||
dictionary BackgroundFetchClickEventInit : BackgroundFetchEventInit {
|
||||
required BackgroundFetchState state;
|
||||
};
|
||||
|
||||
enum BackgroundFetchState { "pending", "succeeded", "failed" };
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
// GENERATED CONTENT - DO NOT EDIT
|
||||
// Content of this file was automatically extracted from the
|
||||
// "CSS Painting API Level 1" spec.
|
||||
// See: https://drafts.css-houdini.org/css-paint-api-1/
|
||||
// Content was automatically extracted by Reffy into reffy-reports
|
||||
// (https://github.com/tidoust/reffy-reports)
|
||||
// Source: CSS Painting API Level 1 (https://drafts.css-houdini.org/css-paint-api-1/)
|
||||
|
||||
partial interface CSS {
|
||||
partial namespace CSS {
|
||||
[SameObject] readonly attribute Worklet paintWorklet;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// GENERATED CONTENT - DO NOT EDIT
|
||||
// Content of this file was automatically extracted from the
|
||||
// "WebRTC 1.0: Real-time Communication Between Browsers" spec.
|
||||
// See: https://w3c.github.io/webrtc-pc/
|
||||
// Content was automatically extracted by Reffy into reffy-reports
|
||||
// (https://github.com/tidoust/reffy-reports)
|
||||
// Source: WebRTC 1.0: Real-time Communication Between Browsers (https://w3c.github.io/webrtc-pc/)
|
||||
|
||||
dictionary RTCConfiguration {
|
||||
sequence<RTCIceServer> iceServers;
|
||||
|
@ -105,7 +105,7 @@ interface RTCPeerConnection : EventTarget {
|
|||
readonly attribute RTCSessionDescription? remoteDescription;
|
||||
readonly attribute RTCSessionDescription? currentRemoteDescription;
|
||||
readonly attribute RTCSessionDescription? pendingRemoteDescription;
|
||||
Promise<void> addIceCandidate((RTCIceCandidateInit or RTCIceCandidate) candidate);
|
||||
Promise<void> addIceCandidate(RTCIceCandidateInit candidate);
|
||||
readonly attribute RTCSignalingState signalingState;
|
||||
readonly attribute RTCIceGatheringState iceGatheringState;
|
||||
readonly attribute RTCIceConnectionState iceConnectionState;
|
||||
|
@ -129,7 +129,7 @@ partial interface RTCPeerConnection {
|
|||
Promise<void> setLocalDescription(RTCSessionDescriptionInit description, VoidFunction successCallback, RTCPeerConnectionErrorCallback failureCallback);
|
||||
Promise<void> createAnswer(RTCSessionDescriptionCallback successCallback, RTCPeerConnectionErrorCallback failureCallback);
|
||||
Promise<void> setRemoteDescription(RTCSessionDescriptionInit description, VoidFunction successCallback, RTCPeerConnectionErrorCallback failureCallback);
|
||||
Promise<void> addIceCandidate((RTCIceCandidateInit or RTCIceCandidate) candidate, VoidFunction successCallback, RTCPeerConnectionErrorCallback failureCallback);
|
||||
Promise<void> addIceCandidate(RTCIceCandidateInit candidate, VoidFunction successCallback, RTCPeerConnectionErrorCallback failureCallback);
|
||||
};
|
||||
|
||||
callback RTCPeerConnectionErrorCallback = void (DOMException error);
|
||||
|
|
|
@ -1,73 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Navigation Timing 2 IDL tests</title>
|
||||
<link rel="author" title="Google" href="http://www.google.com/" />
|
||||
<link rel="help" href="http://www.w3.org/TR/navigation-timing-2/#sec-PerformanceNavigationTiming"/>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/WebIDLParser.js"></script>
|
||||
<script src="/resources/idlharness.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<pre id='untested_idl' style='display:none'>
|
||||
|
||||
interface PerformanceResourceTiming : PerformanceEntry {
|
||||
readonly attribute DOMString initiatorType;
|
||||
readonly attribute DOMHighResTimeStamp workerStart;
|
||||
readonly attribute DOMHighResTimeStamp redirectStart;
|
||||
readonly attribute DOMHighResTimeStamp redirectEnd;
|
||||
readonly attribute DOMHighResTimeStamp fetchStart;
|
||||
readonly attribute DOMHighResTimeStamp domainLookupStart;
|
||||
readonly attribute DOMHighResTimeStamp domainLookupEnd;
|
||||
readonly attribute DOMHighResTimeStamp connectStart;
|
||||
readonly attribute DOMHighResTimeStamp connectEnd;
|
||||
readonly attribute DOMHighResTimeStamp secureConnectionStart;
|
||||
readonly attribute DOMHighResTimeStamp requestStart;
|
||||
readonly attribute DOMHighResTimeStamp responseStart;
|
||||
readonly attribute DOMHighResTimeStamp responseEnd;
|
||||
[MeasureAs=PerformanceResourceTimingSizes] readonly attribute unsigned long long transferSize;
|
||||
[MeasureAs=PerformanceResourceTimingSizes] readonly attribute unsigned long long encodedBodySize;
|
||||
[MeasureAs=PerformanceResourceTimingSizes] readonly attribute unsigned long long decodedBodySize;
|
||||
};
|
||||
interface PerformanceEntry {};
|
||||
</pre>
|
||||
|
||||
<pre id='idl'>
|
||||
enum NavigationType {
|
||||
"navigate",
|
||||
"reload",
|
||||
"back_forward",
|
||||
"prerender"
|
||||
};
|
||||
|
||||
interface PerformanceNavigationTiming : PerformanceResourceTiming {
|
||||
readonly attribute DOMHighResTimeStamp unloadEventStart;
|
||||
readonly attribute DOMHighResTimeStamp unloadEventEnd;
|
||||
readonly attribute DOMHighResTimeStamp domInteractive;
|
||||
readonly attribute DOMHighResTimeStamp domContentLoadedEventStart;
|
||||
readonly attribute DOMHighResTimeStamp domContentLoadedEventEnd;
|
||||
readonly attribute DOMHighResTimeStamp domComplete;
|
||||
readonly attribute DOMHighResTimeStamp loadEventStart;
|
||||
readonly attribute DOMHighResTimeStamp loadEventEnd;
|
||||
readonly attribute NavigationType type;
|
||||
readonly attribute unsigned short redirectCount;
|
||||
[Default] object toJSON();
|
||||
};
|
||||
</pre>
|
||||
|
||||
<script>
|
||||
function test_idl() {
|
||||
var idl_array = new IdlArray();
|
||||
|
||||
idl_array.add_untested_idls(document.getElementById("untested_idl").textContent);
|
||||
idl_array.add_idls(document.getElementById("idl").textContent);
|
||||
|
||||
idl_array.test();
|
||||
}
|
||||
test_idl();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -11,12 +11,12 @@ const elements = [
|
|||
'svg',
|
||||
'g',
|
||||
'defs',
|
||||
'Desc',
|
||||
'desc',
|
||||
'title',
|
||||
'symbol',
|
||||
'use',
|
||||
'image',
|
||||
'Switch',
|
||||
'switch',
|
||||
'style',
|
||||
'path',
|
||||
'rect',
|
||||
|
@ -49,8 +49,7 @@ const elements = [
|
|||
'animate',
|
||||
'set',
|
||||
'animateMotion',
|
||||
'mPath',
|
||||
'animateColor',
|
||||
'mpath',
|
||||
'animateColor',
|
||||
'animateTransform',
|
||||
'font',
|
||||
|
@ -127,12 +126,12 @@ idl_test(
|
|||
SVGSVGElement: ['objects.svg'],
|
||||
SVGGElement: ['objects.g'],
|
||||
SVGDefsElement: ['objects.defs'],
|
||||
SVGDescElement: ['objects.Desc'],
|
||||
SVGDescElement: ['objects.desc'],
|
||||
SVGTitleElement: ['objects.title'],
|
||||
SVGSymbolElement: ['objects.symbol'],
|
||||
SVGUseElement: ['objects.use'],
|
||||
SVGImageElement: ['objects.image'],
|
||||
SVGSwitchElement: ['objects.Switch'],
|
||||
SVGSwitchElement: ['objects.switch'],
|
||||
SVGStyleElement: ['objects.style'],
|
||||
SVGPoint: ['objects.svg.createSVGPoint()'],
|
||||
SVGPointList: ['objects.polygon.points'],
|
||||
|
@ -193,7 +192,7 @@ idl_test(
|
|||
SVGAnimateElement: ['objects.animate'],
|
||||
SVGSetElement: ['objects.set'],
|
||||
SVGAnimateMotionElement: ['objects.animateMotion'],
|
||||
SVGMPathElement: ['objects.mPath'],
|
||||
SVGMPathElement: ['objects.mpath'],
|
||||
SVGAnimateColorElement: ['objects.animateColor'],
|
||||
SVGAnimateTransformElement: ['objects.animateTransform'],
|
||||
SVGFontElement: ['objects.font'],
|
||||
|
|
|
@ -51,11 +51,11 @@
|
|||
<use xlink:href="#path"/>
|
||||
</g>
|
||||
<g transform="translate(240,220)">
|
||||
<use xlink:href="#path"/>
|
||||
<use xlink:href="#path" style="marker:none"/>
|
||||
<use xlink:href="#path" style="stroke:none"/>
|
||||
</g>
|
||||
<g transform="translate(360,220)">
|
||||
<use xlink:href="#path"/>
|
||||
<use xlink:href="#path" style="stroke:none"/>
|
||||
<use xlink:href="#path" style="marker:none"/>
|
||||
</g>
|
||||
<g transform="translate(120,320)">
|
||||
|
@ -63,10 +63,10 @@
|
|||
</g>
|
||||
<g transform="translate(240,320)">
|
||||
<use xlink:href="#path"/>
|
||||
<use xlink:href="#path" style="stroke:none"/>
|
||||
<use xlink:href="#path" style="stroke:none;marker:none"/>
|
||||
</g>
|
||||
<g transform="translate(360,320)">
|
||||
<use xlink:href="#path"/>
|
||||
<use xlink:href="#path" style="stroke:none"/>
|
||||
<use xlink:href="#path" style="marker:none"/>
|
||||
</g>
|
||||
</g>
|
||||
|
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.2 KiB |
|
@ -1,7 +1,7 @@
|
|||
from setuptools import setup
|
||||
|
||||
PACKAGE_VERSION = '2.0'
|
||||
deps = ["six>=1.8"]
|
||||
deps = ["six>=1.8", "h2==3.0.1"]
|
||||
|
||||
setup(name='wptserve',
|
||||
version=PACKAGE_VERSION,
|
||||
|
|
20
tests/wpt/web-platform-tests/uievents/idlharness.window.js
Normal file
20
tests/wpt/web-platform-tests/uievents/idlharness.window.js
Normal file
|
@ -0,0 +1,20 @@
|
|||
// META: script=/resources/WebIDLParser.js
|
||||
// META: script=/resources/idlharness.js
|
||||
|
||||
'use strict';
|
||||
|
||||
idl_test(
|
||||
['uievents'],
|
||||
['dom'],
|
||||
idl_array => {
|
||||
idl_array.add_objects({
|
||||
FocusEvent: ['new FocusEvent("event")'],
|
||||
MouseEvent: ['new MouseEvent("event")'],
|
||||
WheelEvent: ['new WheelEvent("event")'],
|
||||
KeyboardEvent: ['new KeyboardEvent("event")'],
|
||||
CompositionEvent: ['new CompositionEvent("event")'],
|
||||
UIEvent: ['new UIEvent("event")'],
|
||||
InputEvent: ['new InputEvent("event")'],
|
||||
});
|
||||
}
|
||||
);
|
|
@ -1,48 +0,0 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>UI Events IDL tests</title>
|
||||
<meta name=timeout content=long>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/resources/WebIDLParser.js></script>
|
||||
<script src=/resources/idlharness.js></script>
|
||||
|
||||
<h1>UI Events IDL tests</h1>
|
||||
<div id=log></div>
|
||||
|
||||
<script>
|
||||
"use strict";
|
||||
function doTest([dom, uievents]) {
|
||||
var idlArray = new IdlArray();
|
||||
idlArray.add_untested_idls(dom);
|
||||
idlArray.add_idls(uievents);
|
||||
|
||||
idlArray.add_objects({
|
||||
FocusEvent: ['new FocusEvent("event")'],
|
||||
MouseEvent: ['new MouseEvent("event")'],
|
||||
WheelEvent: ['new WheelEvent("event")'],
|
||||
KeyboardEvent: ['new KeyboardEvent("event")'],
|
||||
CompositionEvent: ['new CompositionEvent("event")'],
|
||||
UIEvent: ['new UIEvent("event")'],
|
||||
InputEvent: ['new InputEvent("event")'],
|
||||
});
|
||||
idlArray.test();
|
||||
};
|
||||
|
||||
function fetchData(url) {
|
||||
return fetch(url).then((response) => response.text());
|
||||
}
|
||||
|
||||
function waitForLoad() {
|
||||
return new Promise(function(resolve) {
|
||||
addEventListener("load", resolve);
|
||||
});
|
||||
}
|
||||
|
||||
promise_test(function() {
|
||||
return Promise.all([fetchData("/interfaces/dom.idl"),
|
||||
fetchData("/interfaces/uievents.idl")])
|
||||
.then(doTest);
|
||||
}, "Test driver");
|
||||
|
||||
</script>
|
|
@ -1,23 +0,0 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>IDL harness tests for Vibration API</title>
|
||||
<body>
|
||||
<h1>Description</h1>
|
||||
<p>
|
||||
This test validates the IDL defined by the Vibration API.
|
||||
</p>
|
||||
<p>
|
||||
This test uses <a href="/resources/idlharness.js">idlharness.js</a>
|
||||
</p>
|
||||
<div id="log"></div>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/resources/WebIDLParser.js></script>
|
||||
<script src=/resources/idlharness.js></script>
|
||||
<script>
|
||||
var idl_array = new IdlArray();
|
||||
idl_array.add_untested_idls("interface Navigator {};");
|
||||
idl_array.add_idls("partial interface Navigator { boolean vibrate ((unsigned long or sequence<unsigned long>) pattern);};");
|
||||
idl_array.add_objects({Navigator: ['navigator']});
|
||||
idl_array.test();
|
||||
</script>
|
12
tests/wpt/web-platform-tests/vibration/idlharness.window.js
Normal file
12
tests/wpt/web-platform-tests/vibration/idlharness.window.js
Normal file
|
@ -0,0 +1,12 @@
|
|||
// META: script=/resources/WebIDLParser.js
|
||||
// META: script=/resources/idlharness.js
|
||||
|
||||
'use strict';
|
||||
|
||||
idl_test(
|
||||
['vibration'],
|
||||
['html'],
|
||||
idl_array => {
|
||||
idl_array.add_objects({Navigator: ['navigator']});
|
||||
}
|
||||
);
|
|
@ -0,0 +1,104 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Test that DelayNode output channelCount matches that of the delayed input</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
// See https://github.com/WebAudio/web-audio-api/issues/25
|
||||
|
||||
// sampleRate is a power of two so that delay times are exact in base-2
|
||||
// floating point arithmetic.
|
||||
const SAMPLE_RATE = 32768;
|
||||
// Arbitrary delay time in frames (but this is assumed a multiple of block
|
||||
// size below):
|
||||
const DELAY_FRAMES = 3 * 128;
|
||||
// Implementations may apply interpolation to input samples, which can spread
|
||||
// the effect of input with larger channel counts over neighbouring blocks.
|
||||
// This test ignores enough neighbouring blocks to ignore the effects of
|
||||
// filter radius of up to this number of frames:
|
||||
const INTERPOLATION_GRACE = 128;
|
||||
// Number of frames of DelayNode output that are known to be stereo:
|
||||
const STEREO_FRAMES = 128;
|
||||
// The delay will be increased at this frame to switch DelayNode output back
|
||||
// to mono.
|
||||
const MONO_OUTPUT_START_FRAME =
|
||||
DELAY_FRAMES + INTERPOLATION_GRACE + STEREO_FRAMES;
|
||||
// Number of frames of output that are known to be mono after the known stereo
|
||||
// and interpolation grace.
|
||||
const MONO_FRAMES = 128;
|
||||
// Total length allows for interpolation after effects of stereo input are
|
||||
// finished and one block to test return to mono output:
|
||||
const TOTAL_LENGTH =
|
||||
MONO_OUTPUT_START_FRAME + INTERPOLATION_GRACE + MONO_FRAMES;
|
||||
// maxDelayTime, is a multiple of block size, because the Gecko implementation
|
||||
// once had a bug with delayTime = maxDelayTime in this situation:
|
||||
const MAX_DELAY_FRAMES = TOTAL_LENGTH + INTERPOLATION_GRACE;
|
||||
|
||||
promise_test(() => {
|
||||
let context = new OfflineAudioContext({numberOfChannels: 1,
|
||||
length: TOTAL_LENGTH,
|
||||
sampleRate: SAMPLE_RATE});
|
||||
|
||||
// Only channel 1 of the splitter is connected to the destination.
|
||||
let splitter = new ChannelSplitterNode(context, {numberOfOutputs: 2});
|
||||
splitter.connect(context.destination, 1);
|
||||
|
||||
// A gain node has channelCountMode "max" and channelInterpretation
|
||||
// "speakers", and so will up-mix a mono input when there is stereo input.
|
||||
let gain = new GainNode(context);
|
||||
gain.connect(splitter);
|
||||
|
||||
// The delay node initially outputs a single channel of silence, when it
|
||||
// does not have enough signal in its history to output what it has
|
||||
// previously received. After the delay period, it will then output the
|
||||
// stereo signal it received.
|
||||
let delay =
|
||||
new DelayNode(context,
|
||||
{maxDelayTime: MAX_DELAY_FRAMES / context.sampleRate,
|
||||
delayTime: DELAY_FRAMES / context.sampleRate});
|
||||
// Schedule an increase in the delay to return to mono silent output from
|
||||
// the unfilled portion of the DelayNode's buffer.
|
||||
delay.delayTime.setValueAtTime(MAX_DELAY_FRAMES / context.sampleRate,
|
||||
MONO_OUTPUT_START_FRAME / context.sampleRate);
|
||||
delay.connect(gain);
|
||||
|
||||
let stereoMerger = new ChannelMergerNode(context, {numberOfInputs: 2});
|
||||
stereoMerger.connect(delay);
|
||||
|
||||
let leftOffset = 0.125;
|
||||
let rightOffset = 0.5;
|
||||
let leftSource = new ConstantSourceNode(context, {offset: leftOffset});
|
||||
let rightSource = new ConstantSourceNode(context, {offset: rightOffset});
|
||||
leftSource.start();
|
||||
rightSource.start();
|
||||
leftSource.connect(stereoMerger, 0, 0);
|
||||
rightSource.connect(stereoMerger, 0, 1);
|
||||
// Connect a mono source directly to the gain, so that even stereo silence
|
||||
// will be detected in channel 1 of the gain output because it will cause
|
||||
// the mono source to be up-mixed.
|
||||
let monoOffset = 0.25
|
||||
let monoSource = new ConstantSourceNode(context, {offset: monoOffset});
|
||||
monoSource.start();
|
||||
monoSource.connect(gain);
|
||||
|
||||
return context.startRendering().
|
||||
then((buffer) => {
|
||||
let output = buffer.getChannelData(0);
|
||||
|
||||
function assert_samples_equal(startIndex, length, expected, description)
|
||||
{
|
||||
for (let i = startIndex; i < startIndex + length; ++i) {
|
||||
assert_equals(output[i], expected, description + ` at ${i}`);
|
||||
}
|
||||
}
|
||||
|
||||
assert_samples_equal(0, DELAY_FRAMES - INTERPOLATION_GRACE,
|
||||
0, "Initial mono");
|
||||
assert_samples_equal(DELAY_FRAMES + INTERPOLATION_GRACE, STEREO_FRAMES,
|
||||
monoOffset + rightOffset, "Stereo");
|
||||
assert_samples_equal(MONO_OUTPUT_START_FRAME + INTERPOLATION_GRACE,
|
||||
MONO_FRAMES,
|
||||
0, "Final mono");
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
15
tests/wpt/web-platform-tests/webvtt/api/idlharness.window.js
Normal file
15
tests/wpt/web-platform-tests/webvtt/api/idlharness.window.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
// META: script=/resources/WebIDLParser.js
|
||||
// META: script=/resources/idlharness.js
|
||||
|
||||
'use strict';
|
||||
|
||||
idl_test(
|
||||
['webvtt'],
|
||||
['html', 'dom'],
|
||||
idl_array => {
|
||||
idl_array.add_objects({
|
||||
VTTCue: ['new VTTCue(0, 0, "")'],
|
||||
VTTRegion: ['new VTTRegion()'],
|
||||
});
|
||||
}
|
||||
);
|
|
@ -1,138 +0,0 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>WebVTT IDL tests</title>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/resources/WebIDLParser.js></script>
|
||||
<script src=/resources/idlharness.js></script>
|
||||
|
||||
<h1>WebVTT IDL tests</h1>
|
||||
<div id=log></div>
|
||||
|
||||
<script type=text/plain id=untested>
|
||||
// HTML
|
||||
interface TextTrackCue : EventTarget {
|
||||
readonly attribute TextTrack? track;
|
||||
|
||||
attribute DOMString id;
|
||||
attribute double startTime;
|
||||
attribute double endTime;
|
||||
attribute boolean pauseOnExit;
|
||||
|
||||
attribute EventHandler onenter;
|
||||
attribute EventHandler onexit;
|
||||
};
|
||||
|
||||
[TreatNonObjectAsNull]
|
||||
callback EventHandlerNonNull = any (Event event);
|
||||
typedef EventHandlerNonNull? EventHandler;
|
||||
|
||||
// DOM
|
||||
[Exposed=(Window,Worker)]
|
||||
interface EventTarget {
|
||||
void addEventListener(DOMString type, EventListener? callback, optional (AddEventListenerOptions or boolean) options);
|
||||
void removeEventListener(DOMString type, EventListener? callback, optional (EventListenerOptions or boolean) options);
|
||||
boolean dispatchEvent(Event event);
|
||||
};
|
||||
|
||||
callback interface EventListener {
|
||||
void handleEvent(Event event);
|
||||
};
|
||||
|
||||
dictionary EventListenerOptions {
|
||||
boolean capture = false;
|
||||
};
|
||||
|
||||
dictionary AddEventListenerOptions : EventListenerOptions {
|
||||
boolean passive = false;
|
||||
boolean once = false;
|
||||
};
|
||||
|
||||
[Constructor,
|
||||
Exposed=Window]
|
||||
interface DocumentFragment : Node {
|
||||
};
|
||||
|
||||
[Exposed=Window]
|
||||
interface Node : EventTarget {
|
||||
const unsigned short ELEMENT_NODE = 1;
|
||||
const unsigned short ATTRIBUTE_NODE = 2;
|
||||
const unsigned short TEXT_NODE = 3;
|
||||
const unsigned short CDATA_SECTION_NODE = 4;
|
||||
const unsigned short ENTITY_REFERENCE_NODE = 5; // historical
|
||||
const unsigned short ENTITY_NODE = 6; // historical
|
||||
const unsigned short PROCESSING_INSTRUCTION_NODE = 7;
|
||||
const unsigned short COMMENT_NODE = 8;
|
||||
const unsigned short DOCUMENT_NODE = 9;
|
||||
const unsigned short DOCUMENT_TYPE_NODE = 10;
|
||||
const unsigned short DOCUMENT_FRAGMENT_NODE = 11;
|
||||
const unsigned short NOTATION_NODE = 12; // historical
|
||||
readonly attribute unsigned short nodeType;
|
||||
readonly attribute DOMString nodeName;
|
||||
|
||||
readonly attribute USVString baseURI;
|
||||
|
||||
readonly attribute boolean isConnected;
|
||||
readonly attribute Document? ownerDocument;
|
||||
Node getRootNode(optional GetRootNodeOptions options);
|
||||
readonly attribute Node? parentNode;
|
||||
readonly attribute Element? parentElement;
|
||||
boolean hasChildNodes();
|
||||
[SameObject] readonly attribute NodeList childNodes;
|
||||
readonly attribute Node? firstChild;
|
||||
readonly attribute Node? lastChild;
|
||||
readonly attribute Node? previousSibling;
|
||||
readonly attribute Node? nextSibling;
|
||||
|
||||
[CEReactions] attribute DOMString? nodeValue;
|
||||
[CEReactions] attribute DOMString? textContent;
|
||||
[CEReactions] void normalize();
|
||||
|
||||
[CEReactions, NewObject] Node cloneNode(optional boolean deep = false);
|
||||
boolean isEqualNode(Node? otherNode);
|
||||
boolean isSameNode(Node? otherNode); // historical alias of ===
|
||||
|
||||
const unsigned short DOCUMENT_POSITION_DISCONNECTED = 0x01;
|
||||
const unsigned short DOCUMENT_POSITION_PRECEDING = 0x02;
|
||||
const unsigned short DOCUMENT_POSITION_FOLLOWING = 0x04;
|
||||
const unsigned short DOCUMENT_POSITION_CONTAINS = 0x08;
|
||||
const unsigned short DOCUMENT_POSITION_CONTAINED_BY = 0x10;
|
||||
const unsigned short DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;
|
||||
unsigned short compareDocumentPosition(Node other);
|
||||
boolean contains(Node? other);
|
||||
|
||||
DOMString? lookupPrefix(DOMString? namespace);
|
||||
DOMString? lookupNamespaceURI(DOMString? prefix);
|
||||
boolean isDefaultNamespace(DOMString? namespace);
|
||||
|
||||
[CEReactions] Node insertBefore(Node node, Node? child);
|
||||
[CEReactions] Node appendChild(Node node);
|
||||
[CEReactions] Node replaceChild(Node node, Node child);
|
||||
[CEReactions] Node removeChild(Node child);
|
||||
};
|
||||
|
||||
dictionary GetRootNodeOptions {
|
||||
boolean composed = false;
|
||||
};
|
||||
</script>
|
||||
|
||||
<script>
|
||||
"use strict";
|
||||
|
||||
// https://w3c.github.io/webvtt/
|
||||
|
||||
promise_test(async () => {
|
||||
const webvttIDL = await fetch('/interfaces/webvtt.idl').then(response =>
|
||||
response.text(),
|
||||
);
|
||||
var idlArray = new IdlArray();
|
||||
idlArray.add_untested_idls(document.getElementById('untested').textContent);
|
||||
idlArray.add_idls(webvttIDL);
|
||||
idlArray.add_objects({
|
||||
VTTCue: ['new VTTCue(0, 0, "")'],
|
||||
VTTRegion: ['new VTTRegion()'],
|
||||
});
|
||||
idlArray.test();
|
||||
done();
|
||||
}, 'webvtt interfaces.');
|
||||
</script>
|
|
@ -5,7 +5,7 @@ async_test(t => {
|
|||
let secondTime = false;
|
||||
client.onload = t.step_func(() => {
|
||||
if(!secondTime) {
|
||||
assert_equals(client.responseText, "\uFFFD");
|
||||
assert_equals(client.responseText, "\uFFFD\uFFFD");
|
||||
secondTime = true;
|
||||
client.open("GET", testURL);
|
||||
client.send();
|
||||
|
@ -32,7 +32,7 @@ async_test(t => {
|
|||
async_test(t => {
|
||||
const client = new XMLHttpRequest();
|
||||
client.onload = t.step_func_done(() => {
|
||||
assert_equals(client.responseText, "\uFFFD")
|
||||
assert_equals(client.responseText, "\uFFFD\uFFFD")
|
||||
});
|
||||
client.open("GET", testURL);
|
||||
client.overrideMimeType("text/plain;charset=342");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue