mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Update web-platform-tests to revision 2f95271debcba3e26e7294beeee4fa5a2ecfbfa0
This commit is contained in:
parent
6fab7a7d84
commit
48add2991a
74 changed files with 789 additions and 263 deletions
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-003.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-004.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[transform-animation-under-large-scale.html]
|
||||
expected: TIMEOUT
|
|
@ -1,4 +0,0 @@
|
|||
[CaretPosition-001.html]
|
||||
[Element at (400, 100)]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
||||
|
|
@ -17,3 +17,6 @@
|
|||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
[test some point of the element: top left corner]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[elementsFromPoint-invalid-cases.html]
|
||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[svg-empty-container-with-filter-content-added.html]
|
||||
expected: FAIL
|
|
@ -309,15 +309,21 @@
|
|||
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -56,3 +56,6 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,3 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[cross-origin-objects-on-new-window.html]
|
||||
expected: TIMEOUT
|
|
@ -1,5 +1,4 @@
|
|||
[creating_browsing_context_test_01.html]
|
||||
expected: TIMEOUT
|
||||
[first argument: absolute url]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -171,6 +171,3 @@
|
|||
[XHTML img usemap="#hash-id"]
|
||||
expected: FAIL
|
||||
|
||||
[HTML (standards) IMG usemap="no-hash-name"]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[form-double-submit-3.html]
|
||||
[<button> should have the same double-submit protection as <input type=submit>]
|
||||
expected: FAIL
|
||||
|
|
@ -3,6 +3,3 @@
|
|||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: TIMEOUT
|
||||
|
||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -347,3 +347,6 @@
|
|||
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-2.6532444456922729e-32\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
|
||||
expected: FAIL
|
||||
|
||||
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-1.9106894885712045e-15\t9.3139332532882690e-1\t9.3139332532882879e-1\t1.0000000000000020e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882879e-1 at index of 28696.\n\tMax RelError of 1.0000000000000020e+0 at index of 28696.\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -91,6 +91,13 @@
|
|||
}
|
||||
},
|
||||
"css-flexbox": {
|
||||
"contain-size-layout-abspos-flex-container-crash.html": [
|
||||
"3197d5b796b032742fa44bbd42ba6fe803268d69",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"fixedpos-video-in-abspos-quirk-crash.html": [
|
||||
"80cae086ca7ba1ceb9af2631ea2a5aa04249040b",
|
||||
[
|
||||
|
@ -10995,7 +11002,7 @@
|
|||
},
|
||||
"css-scroll-snap": {
|
||||
"snap-at-user-scroll-end-manual.html": [
|
||||
"e87b8e9b3fad8f31f3dd88a59931d1ed30cd2150",
|
||||
"373e3fcb1e1178f0d30d82a06c97c29db150123a",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -121631,6 +121638,19 @@
|
|||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"transform-animation-under-large-scale.html": [
|
||||
"359380d698bb26a4404d027285150de3b63492a0",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-animations/transform-animation-under-large-scale-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"css-backgrounds": {
|
||||
|
@ -128710,6 +128730,32 @@
|
|||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"widows-orphans-006.html": [
|
||||
"39913266412df2a383b6fc091291333856e65c38",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"widows-orphans-007.html": [
|
||||
"23809c8ffedf7c4702562a08adfbb23f2fd462fd",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"css-cascade": {
|
||||
|
@ -133184,6 +133230,19 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"contain-size-monolithic-002.html": [
|
||||
"7f407df30b7e459673fc6481e0b150f0ae39d46a",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square-only.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"contain-size-multicol-001.html": [
|
||||
"81465c02d6114aa4a27637b2e77b3d62161c0864",
|
||||
[
|
||||
|
@ -160662,6 +160721,32 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"balance-break-avoidance-000.html": [
|
||||
"f6540e4ab0c1ba55ebef6463f90f2246f2801443",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"balance-break-avoidance-001.html": [
|
||||
"1449110516f35ac89bcadd0dfc59fbff3961966d",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"balance-grid-container.html": [
|
||||
"64df23e09fb62c6e71aa834c96b72d4bf2330f06",
|
||||
[
|
||||
|
@ -160675,6 +160760,19 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"balance-orphans-widows-000.html": [
|
||||
"97f2d0ccd17699b7b43c6cdc01e0edcde049de9d",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"baseline-000.html": [
|
||||
"e01e9de1dd124af08eb5a2aa07f36254769375a7",
|
||||
[
|
||||
|
@ -161832,6 +161930,19 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"multicol-fill-balance-nested-000.html": [
|
||||
"5e466df8077545b4d6474389d296bc26c5b28b86",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"multicol-gap-000.xht": [
|
||||
"88aa17e8b488565dc40398e6e8f1d2e3bf3a97a1",
|
||||
[
|
||||
|
@ -221498,6 +221609,19 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"svg-empty-container-with-filter-content-added.html": [
|
||||
"6436461f78bc03b7b2655b7c1b114f15acfc81f9",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/filter-effects/reference/green-100x100.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"svg-feflood-001.html": [
|
||||
"4588cf93f6ca52386ce8af1dbe6e0462572bb559",
|
||||
[
|
||||
|
@ -300300,7 +300424,11 @@
|
|||
"7d3392a54f65dca018e960874efe19f8ca388a70",
|
||||
[]
|
||||
]
|
||||
}
|
||||
},
|
||||
"transform-animation-under-large-scale-ref.html": [
|
||||
"14b41366268c3a33f2d49e477bab2d40c6acb432",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"css-backgrounds": {
|
||||
"META.yml": [
|
||||
|
@ -350515,7 +350643,7 @@
|
|||
[]
|
||||
],
|
||||
"html.idl": [
|
||||
"bf8da3733ec26f4979fed63a17a9180c3355a494",
|
||||
"7a900255780ba3849d9184186efe68cf9b916f79",
|
||||
[]
|
||||
],
|
||||
"idle-detection.tentative.idl": [
|
||||
|
@ -350583,7 +350711,7 @@
|
|||
[]
|
||||
],
|
||||
"media-source.idl": [
|
||||
"51eccd906e74bbe7a9aad42817c730c29c281d79",
|
||||
"f32df3aaedc0b4722f62379273aa489fd5ea0ab7",
|
||||
[]
|
||||
],
|
||||
"mediacapture-depth.idl": [
|
||||
|
@ -350603,7 +350731,7 @@
|
|||
[]
|
||||
],
|
||||
"mediastream-recording.idl": [
|
||||
"c5347959383d1fce74a07be9b2709cac8f9ea5b2",
|
||||
"2878af4b66c276604d4e84e7b9796549f74e7415",
|
||||
[]
|
||||
],
|
||||
"mst-content-hint.idl": [
|
||||
|
@ -350662,6 +350790,10 @@
|
|||
"dc0511b0c4b091066a9dcbc94ece9cac28088bde",
|
||||
[]
|
||||
],
|
||||
"performance-measure-memory.idl": [
|
||||
"b1014f679bb7bd88ed2ef5733ae52c48c4ac0e0f",
|
||||
[]
|
||||
],
|
||||
"performance-timeline.idl": [
|
||||
"34f62a37823f30360ca94b9d8f695668f3ac0969",
|
||||
[]
|
||||
|
@ -350767,7 +350899,7 @@
|
|||
[]
|
||||
],
|
||||
"serial.idl": [
|
||||
"b376bac1ed7a851baff2bde6010944bb7b1c644e",
|
||||
"7bca747757345934b076b5f447cf6274483ecbd5",
|
||||
[]
|
||||
],
|
||||
"server-timing.idl": [
|
||||
|
@ -350875,7 +351007,7 @@
|
|||
[]
|
||||
],
|
||||
"webaudio.idl": [
|
||||
"d869a978e34da5c5455fe4a99d60841187280474",
|
||||
"c8ad2a851fc03f90aff3b0c8a2289fadffdb85be",
|
||||
[]
|
||||
],
|
||||
"webauthn.idl": [
|
||||
|
@ -350919,7 +351051,7 @@
|
|||
[]
|
||||
],
|
||||
"webrtc.idl": [
|
||||
"db644f031836bd2dfa8d046f5c78d561186490ec",
|
||||
"e58df13b02c3fa0072b7054df77f4e8eb498aaae",
|
||||
[]
|
||||
],
|
||||
"webusb.idl": [
|
||||
|
@ -356764,7 +356896,7 @@
|
|||
[]
|
||||
],
|
||||
"nfc-mock.js": [
|
||||
"aa94257e2a394d027972f2fd683e672eeafc8d5e",
|
||||
"2665f3db6b3f2a887ec97d10db6c0123e6a2bb4e",
|
||||
[]
|
||||
],
|
||||
"web-bluetooth-test.js": [
|
||||
|
@ -368664,12 +368796,12 @@
|
|||
[]
|
||||
],
|
||||
"chromium.py": [
|
||||
"3c52f76965b144ba1845c1f6e60fc6ea0bb63d54",
|
||||
"2ff2bd1e083a3439d1289c9f540a8bb2b1e20dbc",
|
||||
[]
|
||||
],
|
||||
"tests": {
|
||||
"test_chromium.py": [
|
||||
"807f5837f7964e329d05377b34029c6ab727611f",
|
||||
"55a12b1d7748aed97b38a56848f052d77412dccb",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -375932,7 +376064,7 @@
|
|||
]
|
||||
],
|
||||
"Blob-stream.any.js": [
|
||||
"bd4f8dc40bca12eb10a2f471dee417d3e31075a0",
|
||||
"792b6639c35a265de4902af83ab5724a178ae8a9",
|
||||
[
|
||||
"FileAPI/blob/Blob-stream.any.html",
|
||||
{
|
||||
|
@ -477201,7 +477333,7 @@
|
|||
]
|
||||
],
|
||||
"idlharness.https.html": [
|
||||
"a906b19ac88ab44afbb0d2d6ac355ad337777e7d",
|
||||
"79f949f436a39e3c652b7016e19876d4fdfea983",
|
||||
[
|
||||
"html/dom/idlharness.https.html?exclude=(Document|Window|HTML.*)",
|
||||
{
|
||||
|
@ -498458,6 +498590,85 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"idlharness.tentative.any.js": [
|
||||
"3e7589aeb95e2d06aa7bfd799a3e5afb342c0fce",
|
||||
[
|
||||
"measure-memory/idlharness.tentative.any.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"window,worker"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/resources/WebIDLParser.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/resources/idlharness.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"measure-memory/idlharness.tentative.any.serviceworker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"window,worker"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/resources/WebIDLParser.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/resources/idlharness.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"measure-memory/idlharness.tentative.any.sharedworker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"window,worker"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/resources/WebIDLParser.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/resources/idlharness.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"measure-memory/idlharness.tentative.any.worker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"window,worker"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/resources/WebIDLParser.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/resources/idlharness.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"iframe.cross-origin.tentative.https.window.js": [
|
||||
"ac0641cc2621df534faedfe50d22dac5bde3cb15",
|
||||
[
|
||||
|
@ -543261,7 +543472,7 @@
|
|||
]
|
||||
],
|
||||
"NDEFReader_scan.https.html": [
|
||||
"0a8d8cb25a567a795dda572e963d74997de35406",
|
||||
"ba101d67e5debc657b140bd23b7d81f9f5dc525d",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -543275,7 +543486,7 @@
|
|||
]
|
||||
],
|
||||
"NDEFReader_write.https.html": [
|
||||
"d1541b1b525828ee2f550fdb866365b683f31746",
|
||||
"35e6dd37299485d914df3e9f0c36d5aed4f10e8b",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -546639,7 +546850,7 @@
|
|||
]
|
||||
],
|
||||
"RTCConfiguration-iceServers.html": [
|
||||
"1cbf1d6c1da47b80d9b3d7173f78062f2e49bf10",
|
||||
"36f1277678ac3e402e60e1254c39bc0d4d84e851",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -547733,6 +547944,13 @@
|
|||
}
|
||||
},
|
||||
"webrtc-extensions": {
|
||||
"RTCOAuthCredential.html": [
|
||||
"63e92c6d087d3f3395651b9fd8ea583736bf7030",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"RTCRtpParameters-maxFramerate.html": [
|
||||
"c1d472386009d693835263483959a83d0e898048",
|
||||
[
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-003.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-004.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[transform-animation-under-large-scale.html]
|
||||
expected: TIMEOUT
|
|
@ -1,4 +0,0 @@
|
|||
[CaretPosition-001.html]
|
||||
[Element at (400, 100)]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
||||
|
|
@ -21,3 +21,6 @@
|
|||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
[test some point of the element: top left corner]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[elementsFromPoint-invalid-cases.html]
|
||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[svg-empty-container-with-filter-content-added.html]
|
||||
expected: FAIL
|
|
@ -309,15 +309,21 @@
|
|||
[fetch(): separate response Content-Type: text/plain ]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -56,3 +56,6 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,3 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[cross-origin-objects-on-new-window.html]
|
||||
expected: TIMEOUT
|
|
@ -1,5 +1,4 @@
|
|||
[creating_browsing_context_test_01.html]
|
||||
expected: TIMEOUT
|
||||
[first argument: absolute url]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -172,6 +172,3 @@
|
|||
[XHTML img usemap="http://example.org/#garbage-before-hash-id"]
|
||||
expected: FAIL
|
||||
|
||||
[HTML (standards) IMG usemap="no-hash-name"]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[form-double-submit-3.html]
|
||||
[<button> should have the same double-submit protection as <input type=submit>]
|
||||
expected: FAIL
|
||||
|
|
@ -4,6 +4,3 @@
|
|||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: TIMEOUT
|
||||
|
||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -575,3 +575,6 @@
|
|||
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-2.6532444456922729e-32\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
|
||||
expected: FAIL
|
||||
|
||||
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-1.9106894885712045e-15\t9.3139332532882690e-1\t9.3139332532882879e-1\t1.0000000000000020e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882879e-1 at index of 28696.\n\tMax RelError of 1.0000000000000020e+0 at index of 28696.\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -3,15 +3,25 @@
|
|||
// META: script=../../streams/resources/test-utils.js
|
||||
'use strict';
|
||||
|
||||
// Helper function that triggers garbage collection while reading a chunk
|
||||
// if perform_gc is true.
|
||||
async function read_and_gc(reader, perform_gc) {
|
||||
const read_promise = reader.read();
|
||||
if (perform_gc)
|
||||
garbageCollect();
|
||||
return read_promise;
|
||||
}
|
||||
|
||||
// Takes in a ReadableStream and reads from it until it is done, returning
|
||||
// an array that contains the results of each read operation
|
||||
async function read_all_chunks(stream) {
|
||||
// an array that contains the results of each read operation. If perform_gc
|
||||
// is true, garbage collection is triggered while reading every chunk.
|
||||
async function read_all_chunks(stream, perform_gc = false) {
|
||||
assert_true(stream instanceof ReadableStream);
|
||||
assert_true('getReader' in stream);
|
||||
const reader = stream.getReader();
|
||||
|
||||
assert_true('read' in reader);
|
||||
let read_value = await reader.read();
|
||||
let read_value = await read_and_gc(reader, perform_gc);
|
||||
|
||||
let out = [];
|
||||
let i = 0;
|
||||
|
@ -19,7 +29,7 @@ async function read_all_chunks(stream) {
|
|||
for (let val of read_value.value) {
|
||||
out[i++] = val;
|
||||
}
|
||||
read_value = await reader.read();
|
||||
read_value = await read_and_gc(reader, perform_gc);
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
@ -56,7 +66,7 @@ promise_test(async() => {
|
|||
const stream = blob.stream();
|
||||
blob = null;
|
||||
garbageCollect();
|
||||
const chunks = await read_all_chunks(stream);
|
||||
const chunks = await read_all_chunks(stream, /*perform_gc=*/true);
|
||||
assert_array_equals(chunks, input_arr);
|
||||
}, "Blob.stream() garbage collection of blob shouldn't break stream" +
|
||||
"consumption")
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
<!DOCTYPE html>
|
||||
<div style="width: 200px; height: 100px; background: blue"></div>
|
||||
<div style="width: 200px; height: 100px; background: green"></div>
|
|
@ -0,0 +1,17 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Transform animation under large scale</title>
|
||||
<link rel="author" title="Xianzhu Wang" href="mailto:wangxianzhu@chromium.org">
|
||||
<link rel="help" href="https://crbug.com/1153428">
|
||||
<link rel="match" href="transform-animation-under-large-scale-ref.html">
|
||||
<style>
|
||||
@keyframes move {
|
||||
0% {transform: translateX(-1px);}
|
||||
100% {transform: translateX(0);}
|
||||
}
|
||||
</style>
|
||||
<div style="width: 2px; height: 2px; transform: scale(100); transform-origin: 0 0; overflow: hidden">
|
||||
<div style="animation: move 1s infinite alternate">
|
||||
<div style="width: 4px; height: 1px; background: blue"></div>
|
||||
<div style="width: 4px; height: 1px; background: green"></div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,22 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
|
||||
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1153517">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
|
||||
<style>
|
||||
#mc > div { display:inline-block; width:100%; height:20px; }
|
||||
#mc > div.red { background:red; }
|
||||
</style>
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div id="mc" style="overflow:hidden; columns:1; column-fill:auto; width:100px; height:100px; orphans:1; widows:1; line-height:0; background:green;">
|
||||
<div></div>
|
||||
<div class="red"></div>
|
||||
<div class="red"></div>
|
||||
<div class="red"></div>
|
||||
<div class="red"></div>
|
||||
<div class="red"></div>
|
||||
</div>
|
||||
<script>
|
||||
document.body.offsetTop,
|
||||
mc.style.widows = 5;
|
||||
</script>
|
|
@ -0,0 +1,34 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
|
||||
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1153517">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
|
||||
<style>
|
||||
#mc > div { display:inline-block; width:100%; height:20px; }
|
||||
#mc > div.green { height:100px; background:green; }
|
||||
</style>
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div style="width:100px; height:100px; background:red;">
|
||||
<div id="mc" style="columns:4; orphans:3; widows:1; column-gap:0; line-height:0;">
|
||||
<div class="green"></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div class="green"></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div class="green"></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div class="green"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
document.body.offsetTop;
|
||||
mc.style.orphans = 5;
|
||||
</script>
|
|
@ -0,0 +1,34 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta charset="UTF-8">
|
||||
<title>CSS Containment Test: absolute positioned 'contain: size' element is monolithic</title>
|
||||
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://www.mozilla.org/">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-size">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
|
||||
<meta name="assert" content="This test checks that an absolute positioned element with size containment is monolithic.">
|
||||
|
||||
<style>
|
||||
#multicol {
|
||||
width: 300px;
|
||||
column-count: 3;
|
||||
}
|
||||
#container {
|
||||
position: relative;
|
||||
}
|
||||
#abs-size-contain {
|
||||
position: absolute;
|
||||
contain: size;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background: green;
|
||||
}
|
||||
</style>
|
||||
|
||||
<p>Test passes if there is a filled green square.</p>
|
||||
<div id="multicol">
|
||||
<div id="container">
|
||||
<div id="abs-size-contain"></div>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://www.mozilla.org/">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1678469">
|
||||
<meta name="assert" content="This test ensures that the browser does not crash after removing the element 'c'.">
|
||||
|
||||
<style>
|
||||
html { columns: 0 }
|
||||
body {
|
||||
transform: rotate(14deg);
|
||||
}
|
||||
#flex-container {
|
||||
display: flex;
|
||||
contain: size layout;
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
function boom() {
|
||||
let flex = document.getElementById('flex-container');
|
||||
let c = document.getElementById('c');
|
||||
flex.removeChild(c);
|
||||
}
|
||||
</script>
|
||||
|
||||
<body onload="boom()">
|
||||
<div id="flex-container">
|
||||
x
|
||||
<div id="c"></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-multicol-1/#filling-columns">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-break-3/#break-between">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-break-3/#break-within">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div style="width:100px; height:100px; background:red;">
|
||||
<div style="columns:4; background:green;">
|
||||
<div style="break-inside:avoid; height:100px;"></div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-multicol-1/#filling-columns">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-break-3/#break-between">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-break-3/#break-within">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div style="width:100px; height:100px; background:red;">
|
||||
<div style="columns:4; background:green;">
|
||||
<div style="break-inside:avoid; break-after:avoid; height:50px;"></div>
|
||||
<div style="break-inside:avoid; height:50px;"></div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-multicol-1/#filling-columns">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
|
||||
<style>
|
||||
.multicol {
|
||||
columns: 2;
|
||||
orphans: 4;
|
||||
widows: 4;
|
||||
width: 100px;
|
||||
column-gap: 80px;
|
||||
column-rule: 80px solid green;
|
||||
line-height: 0;
|
||||
background: red;
|
||||
}
|
||||
span {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
height: 10px;
|
||||
background: green;
|
||||
}
|
||||
span.tall {
|
||||
height: 40px;
|
||||
}
|
||||
</style>
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div class="multicol">
|
||||
<span></span><br>
|
||||
<span></span><br>
|
||||
<span class="tall"></span><br>
|
||||
<span class="tall"></span><br>
|
||||
<span class="tall"></span><br>
|
||||
<span class="tall"></span><br>
|
||||
<span></span><br>
|
||||
<span></span><br>
|
||||
</div>
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-multicol-1/#the-multi-column-model">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-multicol-1/#filling-columns">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-break-3/#break-within">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
|
||||
<style>
|
||||
#outer, #outer div { background: green; }
|
||||
#inner * { break-inside: avoid; }
|
||||
</style>
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div id="outer" style="columns:2; column-gap:0; column-fill:auto; width:100px; height:100px;">
|
||||
<div id="inner" style="columns:2; column-gap:0;">
|
||||
<div style="height:50px;"></div>
|
||||
<div style="height:100px;">
|
||||
<div style="margin-left:100%; width:100%; height:50px; background:red;"></div>
|
||||
</div>
|
||||
<div style="height:50px;"></div>
|
||||
</div>
|
||||
</div>
|
|
@ -4,7 +4,7 @@
|
|||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<style>
|
||||
body {
|
||||
html {
|
||||
margin: 0px;
|
||||
scroll-snap-type: both mandatory;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
<!doctype html>
|
||||
<html class="reftest-wait">
|
||||
<title>Adding content to a previously empty filtered container</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#FilterProperty">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<link rel="bookmark" href="https://crbug.com/1154050">
|
||||
<script src="/common/rendering-utils.js"></script>
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
<svg>
|
||||
<filter id="f" color-interpolation-filters="sRGB">
|
||||
<feComponentTransfer><feFuncA/></feComponentTransfer>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<g id="target" filter="url(#f)"/>
|
||||
</svg>
|
||||
<script>
|
||||
waitForAtLeastOneFrame().then(() => {
|
||||
const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
|
||||
rect.setAttribute('fill', 'green');
|
||||
rect.setAttribute('width', '100');
|
||||
rect.setAttribute('height', '100');
|
||||
document.getElementById('target').appendChild(rect);
|
||||
takeScreenshot();
|
||||
});
|
||||
</script>
|
|
@ -195,7 +195,6 @@ idl_test(
|
|||
HashChangeEvent: [],
|
||||
PageTransitionEvent: [],
|
||||
BeforeUnloadEvent: [],
|
||||
ApplicationCache: ['window.applicationCache'],
|
||||
WindowModal: [],
|
||||
DOMParser: ['new DOMParser()'],
|
||||
Navigator: ['window.navigator'],
|
||||
|
|
|
@ -1701,7 +1701,6 @@ interface Window : EventTarget {
|
|||
|
||||
// the user agent
|
||||
readonly attribute Navigator navigator;
|
||||
[SecureContext] readonly attribute ApplicationCache applicationCache;
|
||||
readonly attribute boolean originIsolated;
|
||||
|
||||
// user prompts
|
||||
|
@ -1801,39 +1800,6 @@ interface BeforeUnloadEvent : Event {
|
|||
attribute DOMString returnValue;
|
||||
};
|
||||
|
||||
[SecureContext,
|
||||
Exposed=Window]
|
||||
interface ApplicationCache : EventTarget {
|
||||
|
||||
// update status
|
||||
const unsigned short UNCACHED = 0;
|
||||
const unsigned short IDLE = 1;
|
||||
const unsigned short CHECKING = 2;
|
||||
const unsigned short DOWNLOADING = 3;
|
||||
const unsigned short UPDATEREADY = 4;
|
||||
const unsigned short OBSOLETE = 5;
|
||||
readonly attribute unsigned short status;
|
||||
|
||||
// updates
|
||||
undefined update();
|
||||
undefined abort();
|
||||
undefined swapCache();
|
||||
|
||||
// events
|
||||
attribute EventHandler onchecking;
|
||||
attribute EventHandler onerror;
|
||||
attribute EventHandler onnoupdate;
|
||||
attribute EventHandler ondownloading;
|
||||
attribute EventHandler onprogress;
|
||||
attribute EventHandler onupdateready;
|
||||
attribute EventHandler oncached;
|
||||
attribute EventHandler onobsolete;
|
||||
};
|
||||
|
||||
interface mixin NavigatorOnLine {
|
||||
readonly attribute boolean onLine;
|
||||
};
|
||||
|
||||
[Exposed=(Window,Worker)]
|
||||
interface ErrorEvent : Event {
|
||||
constructor(DOMString type, optional ErrorEventInit eventInitDict = {});
|
||||
|
@ -2048,6 +2014,10 @@ interface mixin NavigatorLanguage {
|
|||
readonly attribute FrozenArray<DOMString> languages;
|
||||
};
|
||||
|
||||
interface mixin NavigatorOnLine {
|
||||
readonly attribute boolean onLine;
|
||||
};
|
||||
|
||||
interface mixin NavigatorContentUtils {
|
||||
[SecureContext] undefined registerProtocolHandler(DOMString scheme, USVString url);
|
||||
[SecureContext] undefined unregisterProtocolHandler(DOMString scheme, USVString url);
|
||||
|
|
|
@ -25,10 +25,10 @@ interface MediaSource : EventTarget {
|
|||
attribute EventHandler onsourceended;
|
||||
attribute EventHandler onsourceclose;
|
||||
SourceBuffer addSourceBuffer (DOMString type);
|
||||
void removeSourceBuffer (SourceBuffer sourceBuffer);
|
||||
void endOfStream (optional EndOfStreamError error);
|
||||
void setLiveSeekableRange (double start, double end);
|
||||
void clearLiveSeekableRange ();
|
||||
undefined removeSourceBuffer (SourceBuffer sourceBuffer);
|
||||
undefined endOfStream (optional EndOfStreamError error);
|
||||
undefined setLiveSeekableRange (double start, double end);
|
||||
undefined clearLiveSeekableRange ();
|
||||
static boolean isTypeSupported (DOMString type);
|
||||
};
|
||||
|
||||
|
@ -53,9 +53,9 @@ interface SourceBuffer : EventTarget {
|
|||
attribute EventHandler onupdateend;
|
||||
attribute EventHandler onerror;
|
||||
attribute EventHandler onabort;
|
||||
void appendBuffer (BufferSource data);
|
||||
void abort ();
|
||||
void remove (double start, unrestricted double end);
|
||||
undefined appendBuffer (BufferSource data);
|
||||
undefined abort ();
|
||||
undefined remove (double start, unrestricted double end);
|
||||
};
|
||||
|
||||
[Exposed=Window]
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
// (https://github.com/w3c/webref)
|
||||
// Source: MediaStream Recording (https://w3c.github.io/mediacapture-record/)
|
||||
|
||||
[Exposed=Window,
|
||||
Constructor(MediaStream stream, optional MediaRecorderOptions options = {})]
|
||||
[Exposed=Window]
|
||||
interface MediaRecorder : EventTarget {
|
||||
constructor(MediaStream stream, optional MediaRecorderOptions options = {});
|
||||
readonly attribute MediaStream stream;
|
||||
readonly attribute DOMString mimeType;
|
||||
readonly attribute RecordingState state;
|
||||
|
@ -19,11 +19,11 @@ interface MediaRecorder : EventTarget {
|
|||
readonly attribute unsigned long audioBitsPerSecond;
|
||||
readonly attribute BitrateMode audioBitrateMode;
|
||||
|
||||
void start(optional unsigned long timeslice);
|
||||
void stop();
|
||||
void pause();
|
||||
void resume();
|
||||
void requestData();
|
||||
undefined start(optional unsigned long timeslice);
|
||||
undefined stop();
|
||||
undefined pause();
|
||||
undefined resume();
|
||||
undefined requestData();
|
||||
|
||||
static boolean isTypeSupported(DOMString type);
|
||||
};
|
||||
|
@ -47,8 +47,9 @@ enum RecordingState {
|
|||
"paused"
|
||||
};
|
||||
|
||||
[Exposed=Window, Constructor(DOMString type, BlobEventInit eventInitDict)]
|
||||
[Exposed=Window]
|
||||
interface BlobEvent : Event {
|
||||
constructor(DOMString type, BlobEventInit eventInitDict);
|
||||
[SameObject] readonly attribute Blob data;
|
||||
readonly attribute DOMHighResTimeStamp timecode;
|
||||
};
|
||||
|
@ -62,7 +63,8 @@ dictionary MediaRecorderErrorEventInit : EventInit {
|
|||
required DOMException error;
|
||||
};
|
||||
|
||||
[Exposed=Window, Constructor(DOMString type, MediaRecorderErrorEventInit eventInitDict)]
|
||||
[Exposed=Window]
|
||||
interface MediaRecorderErrorEvent : Event {
|
||||
constructor(DOMString type, MediaRecorderErrorEventInit eventInitDict);
|
||||
[SameObject] readonly attribute DOMException error;
|
||||
};
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
// GENERATED CONTENT - DO NOT EDIT
|
||||
// Content was automatically extracted by Reffy into webref
|
||||
// (https://github.com/w3c/webref)
|
||||
// Source: Measure Memory API (https://wicg.github.io/performance-measure-memory/)
|
||||
|
||||
dictionary MemoryMeasurement {
|
||||
unsigned long long bytes;
|
||||
sequence<MemoryBreakdownEntry> breakdown;
|
||||
};
|
||||
|
||||
dictionary MemoryBreakdownEntry {
|
||||
unsigned long long bytes;
|
||||
sequence<MemoryAttribution> attribution;
|
||||
sequence<DOMString> userAgentSpecificTypes;
|
||||
};
|
||||
|
||||
dictionary MemoryAttribution {
|
||||
USVString url;
|
||||
MemoryAttributionContainer container;
|
||||
DOMString scope;
|
||||
};
|
||||
|
||||
dictionary MemoryAttributionContainer {
|
||||
DOMString id;
|
||||
USVString src;
|
||||
};
|
||||
|
||||
partial interface Performance {
|
||||
[CrossOriginIsolated] Promise<MemoryMeasurement> measureMemory();
|
||||
};
|
|
@ -23,7 +23,7 @@ interface Serial : EventTarget {
|
|||
|
||||
[Exposed=(DedicatedWorker,Window), SecureContext]
|
||||
interface SerialPort {
|
||||
Promise<void> open(optional SerialOptions options = {});
|
||||
Promise<undefined> open(optional SerialOptions options = {});
|
||||
readonly attribute ReadableStream in;
|
||||
readonly attribute WritableStream out;
|
||||
SerialPortInfo getInfo();
|
||||
|
|
|
@ -613,6 +613,11 @@ interface AudioWorkletProcessor {
|
|||
readonly attribute MessagePort port;
|
||||
};
|
||||
|
||||
callback AudioWorkletProcessCallback =
|
||||
boolean (FrozenArray<FrozenArray<Float32Array>> inputs,
|
||||
FrozenArray<FrozenArray<Float32Array>> outputs,
|
||||
object parameters);
|
||||
|
||||
dictionary AudioParamDescriptor {
|
||||
required DOMString name;
|
||||
float defaultValue = 0;
|
||||
|
|
|
@ -119,7 +119,7 @@ interface RTCPeerConnection : EventTarget {
|
|||
Promise<undefined> createOffer(RTCSessionDescriptionCallback successCallback,
|
||||
RTCPeerConnectionErrorCallback failureCallback,
|
||||
optional RTCOfferOptions options = {});
|
||||
Promise<undefined> setLocalDescription(optional RTCLocalSessionDescriptionInit description = {},
|
||||
Promise<undefined> setLocalDescription(RTCLocalSessionDescriptionInit description,
|
||||
VoidFunction successCallback,
|
||||
RTCPeerConnectionErrorCallback failureCallback);
|
||||
Promise<undefined> createAnswer(RTCSessionDescriptionCallback successCallback,
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
// META: global=window,worker
|
||||
// META: script=/resources/WebIDLParser.js
|
||||
// META: script=/resources/idlharness.js
|
||||
|
||||
'use strict';
|
||||
|
||||
// https://wicg.github.io/performance-measure-memory/
|
||||
|
||||
idl_test(
|
||||
['performance-measure-memory'],
|
||||
['hr-time', 'dom'],
|
||||
async idl_array => {
|
||||
// Nothing to add.
|
||||
}
|
||||
);
|
|
@ -214,23 +214,11 @@ var WebNFCTest = (() => {
|
|||
return createNDEFError(null);
|
||||
}
|
||||
|
||||
async cancelWatch(id) {
|
||||
cancelWatch(id) {
|
||||
let index = this.watchers_.findIndex(value => value.id === id);
|
||||
if (index === -1) {
|
||||
return createNDEFError(device.mojom.NDEFErrorType.NOT_FOUND);
|
||||
if (index !== -1) {
|
||||
this.watchers_.splice(index, 1);
|
||||
}
|
||||
|
||||
this.watchers_.splice(index, 1);
|
||||
return createNDEFError(null);
|
||||
}
|
||||
|
||||
async cancelAllWatches() {
|
||||
if (this.watchers_.length === 0) {
|
||||
return createNDEFError(device.mojom.NDEFErrorType.NOT_FOUND);
|
||||
}
|
||||
|
||||
this.watchers_.splice(0, this.watchers_.length);
|
||||
return createNDEFError(null);
|
||||
}
|
||||
|
||||
getHWError() {
|
||||
|
|
|
@ -31,48 +31,55 @@ class ChromiumFormatter(base.BaseFormatter):
|
|||
# the trie and the leaf contains the dict of per-test data.
|
||||
self.tests = {}
|
||||
|
||||
# Message dictionary, keyed by test name. Value is a list of strings:
|
||||
# see _append_test_message for the format.
|
||||
# Two dictionaries keyed by test name. Values are lists of strings:
|
||||
# actual metadata content and other messages, respectively.
|
||||
# See _append_test_message for examples.
|
||||
self.actual_metadata = defaultdict(list)
|
||||
self.messages = defaultdict(list)
|
||||
|
||||
# List of tests that have failing subtests.
|
||||
self.tests_with_subtest_fails = set()
|
||||
|
||||
# Browser log for the current test under execution.
|
||||
self.test_log = []
|
||||
# These logs are from ChromeDriver's stdout/err, so we cannot say for
|
||||
# sure which test a message is from, but instead we correlate them based
|
||||
# on timing.
|
||||
self.browser_log = []
|
||||
|
||||
def _append_test_message(self, test, subtest, wpt_actual_status, message):
|
||||
"""
|
||||
r"""
|
||||
Appends the message data for a test or subtest.
|
||||
|
||||
:param str test: the name of the test
|
||||
:param str subtest: the name of the subtest with the message. Will be
|
||||
None if this is called for a test.
|
||||
:param str wpt_actual_status: the test status as reported by WPT
|
||||
:param str message: the string to append to the message for this test
|
||||
|
||||
Example:
|
||||
[test_or_subtest_name]
|
||||
expected: FAIL
|
||||
message: some test message eg assert failure
|
||||
Example actual_metadata of a test with a subtest:
|
||||
"[test_name]\n expected: OK\n"
|
||||
" [subtest_name]\n expected: FAIL\n"
|
||||
|
||||
NOTE: throughout this function we output a key called "expected" but
|
||||
fill it in with the actual status. This is by design. The goal of this
|
||||
output is to look exactly like WPT's expectation metadata so that it
|
||||
can be easily diff-ed.
|
||||
|
||||
Messages are appended verbatim to self.messages[test].
|
||||
"""
|
||||
# NOTE: throughout this function we output a key called "expected" but
|
||||
# fill it in with the actual status. This is by design. The goal of this
|
||||
# output is to look exactly like WPT's expectation metadata so that it
|
||||
# can be easily diff-ed.
|
||||
if subtest:
|
||||
result = " [%s]\n expected: %s\n" % (subtest, wpt_actual_status)
|
||||
self.actual_metadata[test].append(result)
|
||||
if message:
|
||||
result += " message: %s\n" % message
|
||||
self.messages[test].append(result)
|
||||
self.messages[test].append("%s: %s\n" % (subtest, message))
|
||||
else:
|
||||
# No subtest, so this is the top-level test. The result must be
|
||||
# prepended to the list of messages, so that the message for the
|
||||
# test comes before any subtest messages.
|
||||
# prepended to the list, so that it comes before any subtest.
|
||||
test_name_last_part = test.split("/")[-1]
|
||||
result = "[%s]\n expected: %s\n" % (test_name_last_part, wpt_actual_status)
|
||||
self.actual_metadata[test].insert(0, result)
|
||||
if message:
|
||||
result += " message: %s\n" % message
|
||||
self.messages[test].insert(0, result)
|
||||
self.messages[test].insert(0, "Harness: %s\n" % message)
|
||||
|
||||
def _append_artifact(self, cur_dict, artifact_name, artifact_value):
|
||||
"""
|
||||
|
@ -86,13 +93,16 @@ class ChromiumFormatter(base.BaseFormatter):
|
|||
cur_dict["artifacts"] = defaultdict(list)
|
||||
cur_dict["artifacts"][artifact_name].append(artifact_value)
|
||||
|
||||
def _store_test_result(self, name, actual, expected, messages, wpt_actual,
|
||||
subtest_failure, reftest_screenshots):
|
||||
def _store_test_result(self, name, actual, expected, actual_metadata,
|
||||
messages, wpt_actual, subtest_failure,
|
||||
reftest_screenshots=None):
|
||||
"""
|
||||
Stores the result of a single test in |self.tests|
|
||||
|
||||
:param str name: name of the test.
|
||||
:param str actual: actual status of the test.
|
||||
:param str expected: expected statuses of the test.
|
||||
:param list actual_metadata: a list of metadata items.
|
||||
:param list messages: a list of test messages.
|
||||
:param str wpt_actual: actual status reported by wpt, may differ from |actual|.
|
||||
:param bool subtest_failure: whether this test failed because of subtests.
|
||||
|
@ -112,10 +122,12 @@ class ChromiumFormatter(base.BaseFormatter):
|
|||
if wpt_actual != actual:
|
||||
self._append_artifact(cur_dict, "wpt_actual_status", wpt_actual)
|
||||
if wpt_actual == 'CRASH':
|
||||
for line in self.test_log:
|
||||
for line in self.browser_log:
|
||||
self._append_artifact(cur_dict, "wpt_crash_log", line)
|
||||
for metadata in actual_metadata:
|
||||
self._append_artifact(cur_dict, "wpt_actual_metadata", metadata)
|
||||
for message in messages:
|
||||
self._append_artifact(cur_dict, "log", message)
|
||||
self._append_artifact(cur_dict, "wpt_log", message)
|
||||
|
||||
# Store screenshots (if any).
|
||||
for item in reftest_screenshots or []:
|
||||
|
@ -230,19 +242,21 @@ class ChromiumFormatter(base.BaseFormatter):
|
|||
self._store_test_result(test_name,
|
||||
actual_status,
|
||||
expected_statuses,
|
||||
self.actual_metadata[test_name],
|
||||
self.messages[test_name],
|
||||
wpt_actual_status,
|
||||
subtest_failure,
|
||||
data.get("extra", {}).get("reftest_screenshots"))
|
||||
|
||||
# Remove the test from messages dict to avoid accumulating too many.
|
||||
# Remove the test from dicts to avoid accumulating too many.
|
||||
self.actual_metadata.pop(test_name)
|
||||
self.messages.pop(test_name)
|
||||
|
||||
# Update the count of how many tests ran with each status.
|
||||
self.num_failures_by_status[actual_status] += 1
|
||||
|
||||
# New test, new browser logs.
|
||||
self.test_log = []
|
||||
self.browser_log = []
|
||||
|
||||
def suite_end(self, data):
|
||||
# Create the final result dictionary
|
||||
|
@ -259,4 +273,4 @@ class ChromiumFormatter(base.BaseFormatter):
|
|||
|
||||
def process_output(self, data):
|
||||
if 'command' in data and 'chromedriver' in data['command']:
|
||||
self.test_log.append(data['data'])
|
||||
self.browser_log.append(data['data'])
|
||||
|
|
|
@ -157,17 +157,24 @@ def test_subtest_messages(capfd):
|
|||
output_json = json.load(output)
|
||||
|
||||
t1_artifacts = output_json["tests"]["t1"]["artifacts"]
|
||||
assert t1_artifacts["log"] == [
|
||||
assert t1_artifacts["wpt_actual_metadata"] == [
|
||||
"[t1]\n expected: PASS\n",
|
||||
" [t1_a]\n expected: FAIL\n message: t1_a_message\n",
|
||||
" [t1_b]\n expected: PASS\n message: t1_b_message\n",
|
||||
" [t1_a]\n expected: FAIL\n",
|
||||
" [t1_b]\n expected: PASS\n",
|
||||
]
|
||||
assert t1_artifacts["wpt_log"] == [
|
||||
"t1_a: t1_a_message\n",
|
||||
"t1_b: t1_b_message\n",
|
||||
]
|
||||
assert t1_artifacts["wpt_subtest_failure"] == ["true"]
|
||||
t2_artifacts = output_json["tests"]["t2"]["artifacts"]
|
||||
assert t2_artifacts["log"] == [
|
||||
"[t2]\n expected: TIMEOUT\n message: t2_message\n",
|
||||
assert t2_artifacts["wpt_actual_metadata"] == [
|
||||
"[t2]\n expected: TIMEOUT\n",
|
||||
" [t2_a]\n expected: PASS\n",
|
||||
]
|
||||
assert t2_artifacts["wpt_log"] == [
|
||||
"Harness: t2_message\n"
|
||||
]
|
||||
assert "wpt_subtest_failure" not in t2_artifacts.keys()
|
||||
|
||||
|
||||
|
@ -210,11 +217,17 @@ def test_subtest_failure(capfd):
|
|||
|
||||
test_obj = output_json["tests"]["t1"]
|
||||
t1_artifacts = test_obj["artifacts"]
|
||||
assert t1_artifacts["log"] == [
|
||||
"[t1]\n expected: PASS\n message: top_message\n",
|
||||
" [t1_a]\n expected: FAIL\n message: t1_a_message\n",
|
||||
" [t1_b]\n expected: PASS\n message: t1_b_message\n",
|
||||
" [t1_c]\n expected: TIMEOUT\n message: t1_c_message\n",
|
||||
assert t1_artifacts["wpt_actual_metadata"] == [
|
||||
"[t1]\n expected: PASS\n",
|
||||
" [t1_a]\n expected: FAIL\n",
|
||||
" [t1_b]\n expected: PASS\n",
|
||||
" [t1_c]\n expected: TIMEOUT\n",
|
||||
]
|
||||
assert t1_artifacts["wpt_log"] == [
|
||||
"Harness: top_message\n",
|
||||
"t1_a: t1_a_message\n",
|
||||
"t1_b: t1_b_message\n",
|
||||
"t1_c: t1_c_message\n",
|
||||
]
|
||||
assert t1_artifacts["wpt_subtest_failure"] == ["true"]
|
||||
# The status of the test in the output is a failure because subtests failed,
|
||||
|
@ -266,13 +279,16 @@ def test_expected_subtest_failure(capfd):
|
|||
output_json = json.load(output)
|
||||
|
||||
test_obj = output_json["tests"]["t1"]
|
||||
t1_log = test_obj["artifacts"]["log"]
|
||||
print("Lpz t1log=%s" % t1_log)
|
||||
assert t1_log == [
|
||||
assert test_obj["artifacts"]["wpt_actual_metadata"] == [
|
||||
"[t1]\n expected: OK\n",
|
||||
" [t1_a]\n expected: FAIL\n message: t1_a_message\n",
|
||||
" [t1_b]\n expected: PASS\n message: t1_b_message\n",
|
||||
" [t1_c]\n expected: TIMEOUT\n message: t1_c_message\n",
|
||||
" [t1_a]\n expected: FAIL\n",
|
||||
" [t1_b]\n expected: PASS\n",
|
||||
" [t1_c]\n expected: TIMEOUT\n",
|
||||
]
|
||||
assert test_obj["artifacts"]["wpt_log"] == [
|
||||
"t1_a: t1_a_message\n",
|
||||
"t1_b: t1_b_message\n",
|
||||
"t1_c: t1_c_message\n",
|
||||
]
|
||||
# The status of the test in the output is a pass because the subtest
|
||||
# failures were all expected.
|
||||
|
@ -316,9 +332,12 @@ def test_unexpected_subtest_pass(capfd):
|
|||
|
||||
test_obj = output_json["tests"]["t1"]
|
||||
t1_artifacts = test_obj["artifacts"]
|
||||
assert t1_artifacts["log"] == [
|
||||
assert t1_artifacts["wpt_actual_metadata"] == [
|
||||
"[t1]\n expected: PASS\n",
|
||||
" [t1_a]\n expected: PASS\n message: t1_a_message\n",
|
||||
" [t1_a]\n expected: PASS\n",
|
||||
]
|
||||
assert t1_artifacts["wpt_log"] == [
|
||||
"t1_a: t1_a_message\n",
|
||||
]
|
||||
assert t1_artifacts["wpt_subtest_failure"] == ["true"]
|
||||
# Since the subtest status is unexpected, we fail the test. But we report
|
||||
|
|
|
@ -72,7 +72,7 @@ nfc_test(async () => {
|
|||
await ndef.scan();
|
||||
parent.postMessage("Failure", "*");
|
||||
} catch (error) {
|
||||
if (error.name == "NotAllowedError") {
|
||||
if (error.name == "InvalidStateError") {
|
||||
parent.postMessage("Success", "*");
|
||||
} else {
|
||||
parent.postMessage("Failure", "*");
|
||||
|
@ -107,20 +107,6 @@ nfc_test(async (t, mockNFC) => {
|
|||
await promise;
|
||||
}, "Test that nfc watch success if NFC HW is enabled.");
|
||||
|
||||
nfc_test(async (t, mockNFC) => {
|
||||
const ndef = new NDEFReader();
|
||||
const controller = new AbortController();
|
||||
const ndefWatcher = new EventWatcher(t, ndef, ["reading", "readingerror"]);
|
||||
const promise = ndefWatcher.wait_for("reading").then(event => {
|
||||
assert_true(event instanceof NDEFReadingEvent);
|
||||
controller.abort();
|
||||
});
|
||||
await ndef.scan({signal : controller.signal});
|
||||
|
||||
mockNFC.setReadingMessage(createMessage([createTextRecord(test_text_data)]));
|
||||
await promise;
|
||||
}, "Test that NDEFReader.scan matches any ids if NDEFScanOptions.id is undefined.");
|
||||
|
||||
nfc_test(async (t, mockNFC) => {
|
||||
const ndef = new NDEFReader();
|
||||
const controller = new AbortController();
|
||||
|
|
|
@ -236,7 +236,7 @@ nfc_test(async () => {
|
|||
await ndef.write("Test");
|
||||
parent.postMessage("Failure", "*");
|
||||
} catch (error) {
|
||||
if (error.name == "NotAllowedError") {
|
||||
if (error.name == "InvalidStateError") {
|
||||
parent.postMessage("Success", "*");
|
||||
} else {
|
||||
parent.postMessage("Failure", "*");
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>RTCConfiguration iceServers with OAuth credentials</title>
|
||||
<script src='/resources/testharness.js'></script>
|
||||
<script src='/resources/testharnessreport.js'></script>
|
||||
<script src='../webrtc/RTCConfiguration-helper.js'></script>
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
// These tests are based on
|
||||
// https://w3c.github.io/webrtc-extensions/#rtcoauthcredential-dictionary
|
||||
|
||||
/*
|
||||
4.3.2. To set a configuration
|
||||
11.6. If scheme name is turn or turns, and server.credentialType is "oauth",
|
||||
and server.credential is not an RTCOAuthCredential, then throw an
|
||||
InvalidAccessError and abort these steps.
|
||||
*/
|
||||
config_test(makePc => {
|
||||
assert_throws_dom('InvalidAccessError', () =>
|
||||
makePc({ iceServers: [{
|
||||
urls: 'turns:turn.example.org',
|
||||
credentialType: 'oauth',
|
||||
username: 'user',
|
||||
credential: 'cred'
|
||||
}] }));
|
||||
}, 'with turns server, credentialType oauth, and string credential should throw InvalidAccessError');
|
||||
|
||||
config_test(makePc => {
|
||||
const pc = makePc({ iceServers: [{
|
||||
urls: 'turns:turn2.example.net',
|
||||
username: '22BIjxU93h/IgwEb',
|
||||
credential: {
|
||||
macKey: 'WmtzanB3ZW9peFhtdm42NzUzNG0=',
|
||||
accessToken: 'AAwg3kPHWPfvk9bDFL936wYvkoctMADzQ5VhNDgeMR3+ZlZ35byg972fW8QjpEl7bx91YLBPFsIhsxloWcXPhA=='
|
||||
},
|
||||
credentialType: 'oauth'
|
||||
}]});
|
||||
const { iceServers } = pc.getConfiguration();
|
||||
const server = iceServers[0];
|
||||
assert_equals(server.credentialType, 'oauth');
|
||||
}, 'with turns server, credential type and credential from spec should not throw');
|
||||
|
||||
</script>
|
|
@ -370,36 +370,4 @@
|
|||
}] }));
|
||||
}, 'with turns server, credentialType password, and object credential should throw InvalidAccessError');
|
||||
|
||||
/*
|
||||
4.3.2. To set a configuration
|
||||
11.6. If scheme name is turn or turns, and server.credentialType is "oauth",
|
||||
and server.credential is not an RTCOAuthCredential, then throw an
|
||||
InvalidAccessError and abort these steps.
|
||||
*/
|
||||
config_test(makePc => {
|
||||
assert_throws_dom('InvalidAccessError', () =>
|
||||
makePc({ iceServers: [{
|
||||
urls: 'turns:turn.example.org',
|
||||
credentialType: 'oauth',
|
||||
username: 'user',
|
||||
credential: 'cred'
|
||||
}] }));
|
||||
}, 'with turns server, credentialType oauth, and string credential should throw InvalidAccessError');
|
||||
|
||||
/*
|
||||
Tested
|
||||
4.3.2. To set a configuration
|
||||
11.1-6.
|
||||
|
||||
Untestable
|
||||
4.3.2. To set a configuration
|
||||
11.7. Append server to validatedServers.
|
||||
|
||||
Coverage Report
|
||||
Tested 9
|
||||
Not Tested 0
|
||||
Untestable 1
|
||||
Total 10
|
||||
*/
|
||||
|
||||
</script>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue