mirror of
https://github.com/servo/servo.git
synced 2025-06-24 17:14:33 +01:00
Update web-platform-tests to revision b'49287d0e660dd6704c508ef20c9d53c13aee296b'
This commit is contained in:
parent
94c4e1cd1a
commit
d2eeed132b
76 changed files with 7672 additions and 5893 deletions
4
tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini
Normal file
4
tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini
Normal file
|
@ -0,0 +1,4 @@
|
|||
[url-charset.window.html]
|
||||
expected: TIMEOUT
|
||||
[Blob charset should override any auto-detected charset.]
|
||||
expected: TIMEOUT
|
|
@ -9,6 +9,13 @@
|
|||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"Blob-stream-sync-xhr-crash.html": [
|
||||
"fe54fb615b1579a8a75396184f24f0b4ed3d2984",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
|
@ -1809,6 +1816,15 @@
|
|||
]
|
||||
]
|
||||
},
|
||||
"css-font-loading": {
|
||||
"fontfaceset-loading-worker-crash.html": [
|
||||
"552722b6edd15818389bc82e09ff424053f85524",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"css-fonts": {
|
||||
"font-face-local-css-wide-keyword-crash.html": [
|
||||
"3ece8c7c48c2b4ab7c17d32275f70a2c10220b8e",
|
||||
|
@ -3021,6 +3037,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"first-line-inherited-transition-crash.html": [
|
||||
"223a0060ebf9a5f9a564c7ccaef0aa09be663878",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"highlight-painting-soft-hyphens-002-crash.html": [
|
||||
"eb80d4890991f1b3d92b6c6e0b580bd7408016a5",
|
||||
[
|
||||
|
@ -3512,6 +3535,13 @@
|
|||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"text-wrap-balance-narrow-crash.html": [
|
||||
"dcc0d8773df6c7bcaf04b606955774d2b6e8563c",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"whitespace-followed-by-cham-symbol-crash.html": [
|
||||
|
@ -29206,6 +29236,45 @@
|
|||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"zero-size-001-print.tentative.html": [
|
||||
"98f77a7b8635a688ac6641e1d0bc58290f20f1cc",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/printing/zero-size-print-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"zero-size-002-print.tentative.html": [
|
||||
"e243c34e7c01ee2d7de0018582829690c0e4f05e",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/printing/zero-size-print-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"zero-size-003-print.tentative.html": [
|
||||
"c514f72360f63bff53e1e249155ac5b321f64b3e",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/printing/zero-size-print-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
|
@ -297194,6 +297263,19 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"case-insensitive-parent.html": [
|
||||
"a684bbb97c870b587b73e616ca1bfa4fa423f4ff",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/selectors/case-insensitive-parent-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"child-indexed-no-parent.html": [
|
||||
"c77564bf554c0c9ebaa00b784afb7787abb2db62",
|
||||
[
|
||||
|
@ -372721,6 +372803,12 @@
|
|||
"79f63ced683e6342866d734b04f3c687f6dd942f",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"support": {
|
||||
"fontfaceset-loading-worker.js": [
|
||||
"73579756614c2e5b191c9264a32701f57aade84b",
|
||||
[]
|
||||
]
|
||||
}
|
||||
},
|
||||
"css-fonts": {
|
||||
|
@ -401871,6 +401959,10 @@
|
|||
"transition-in-media-print-ref.html": [
|
||||
"2f25c06131e9372512e23ab9ff8428c594f74391",
|
||||
[]
|
||||
],
|
||||
"zero-size-print-ref.html": [
|
||||
"569af797ed98a9166481b17d71698f8ae85447e8",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"reference": {
|
||||
|
@ -401982,6 +402074,10 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"case-insensitive-parent-ref.html": [
|
||||
"0138b79972c3e1c2689df30ec72150e5993269f4",
|
||||
[]
|
||||
],
|
||||
"child-indexed-no-parent-ref.html": [
|
||||
"069c86cf080264e2cead8ab783aac028a84a2f7b",
|
||||
[]
|
||||
|
@ -426810,6 +426906,20 @@
|
|||
]
|
||||
}
|
||||
},
|
||||
"long-animation-frame": {
|
||||
"META.yml": [
|
||||
"769c325aeecff6db8e378ff7256b88c679cbc008",
|
||||
[]
|
||||
],
|
||||
"tentative": {
|
||||
"resources": {
|
||||
"utils.js": [
|
||||
"47c138b1e62ebfbe9287e903e4e7be438674dc34",
|
||||
[]
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"longtask-timing": {
|
||||
"META.yml": [
|
||||
"91c07f9fd3f3097367f2ad87a2ebb0d98b11d4e2",
|
||||
|
@ -432897,7 +433007,7 @@
|
|||
[]
|
||||
],
|
||||
"mock-direct-sockets.js": [
|
||||
"e2e02453f7f4d446c528051fc44974878150b809",
|
||||
"6d557f7a01530664d619c1568f1482bfd121e4b7",
|
||||
[]
|
||||
],
|
||||
"mock-facedetection.js": [
|
||||
|
@ -437428,7 +437538,7 @@
|
|||
[]
|
||||
],
|
||||
"helpers.js": [
|
||||
"5728d0690d778b666ff661362855b8ca23b73f67",
|
||||
"d2ded9a946cd1044d72135ea4f5c1067a3bb414e",
|
||||
[]
|
||||
],
|
||||
"resources": {
|
||||
|
@ -437437,7 +437547,7 @@
|
|||
[]
|
||||
],
|
||||
"embedded_responder.js": [
|
||||
"84358bcdfc226172ece14c4eff6cd2c77e0b833c",
|
||||
"fe33f3125fab7f65967101bcca02fd9ce54cdb45",
|
||||
[]
|
||||
],
|
||||
"hasStorageAccess-iframe.html": [
|
||||
|
@ -451932,7 +452042,7 @@
|
|||
[]
|
||||
],
|
||||
"average_pool2d.json": [
|
||||
"5523137be00388d75f335f08beb483a83da9621c",
|
||||
"badcfc888d8ae278407c05f668222f10b7d8cb53",
|
||||
[]
|
||||
],
|
||||
"batch_normalization.json": [
|
||||
|
@ -451952,11 +452062,11 @@
|
|||
[]
|
||||
],
|
||||
"conv2d.json": [
|
||||
"ca7dc74aa7968f1d03788fe3a9fd7e7931ecb66d",
|
||||
"850897df4e107c616ec3442563d4a73f642586a9",
|
||||
[]
|
||||
],
|
||||
"conv_transpose2d.json": [
|
||||
"311a7d9c78aaca3e1f9be2fdda045bee897ba12e",
|
||||
"c7026f91ee5011747d1ba058e07ebc4a54a45a60",
|
||||
[]
|
||||
],
|
||||
"cos.json": [
|
||||
|
@ -451976,7 +452086,7 @@
|
|||
[]
|
||||
],
|
||||
"gemm.json": [
|
||||
"1323dcbdd8dfce6138d7fbf8034b2b1f1c653951",
|
||||
"3738e19f7c641020309de975b4474fd652fbcb35",
|
||||
[]
|
||||
],
|
||||
"leaky_relu.json": [
|
||||
|
@ -451988,7 +452098,7 @@
|
|||
[]
|
||||
],
|
||||
"matmul.json": [
|
||||
"a4ca8d026403c738be6ab6ccb9df5df8ba4becc8",
|
||||
"6e0423a68d3e3a9c07ea3cd7a7bd83973ae34e46",
|
||||
[]
|
||||
],
|
||||
"max.json": [
|
||||
|
@ -452056,7 +452166,7 @@
|
|||
[]
|
||||
],
|
||||
"softmax.json": [
|
||||
"b19ce4059121bff35d5b3c3f1e67fce787384e90",
|
||||
"52ea57c7632d0d27b1745ddd4e983c37becf9832",
|
||||
[]
|
||||
],
|
||||
"split.json": [
|
||||
|
@ -512929,6 +513039,20 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"text-wrap-balance-001.html": [
|
||||
"3360681d0fc771e30730479fdf3262f4565dcd32",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"text-wrap-white-space-001.html": [
|
||||
"0600b8249e5c17e3feee30eebe854043c60ccb49",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"trailing-space-before-br-001.html": [
|
||||
"fcc2bdfa43633783151aaa8c0f65458d13e764f1",
|
||||
[
|
||||
|
@ -518312,7 +518436,7 @@
|
|||
]
|
||||
],
|
||||
"signs-abs-computed.html": [
|
||||
"74dff7c9c0c157a06db97868cac7abf3b1804d45",
|
||||
"774ca34cb74e384f9dcae455a6e557ecc5deab5d",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -518326,7 +518450,7 @@
|
|||
]
|
||||
],
|
||||
"signs-abs-serialize.html": [
|
||||
"28d04b9695de213b7258c68e5ef1ca0aabbc0026",
|
||||
"ea3d0cb433bb9ae631d67dcd3b6b96d494baab6c",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -620003,6 +620127,61 @@
|
|||
]
|
||||
]
|
||||
},
|
||||
"long-animation-frame": {
|
||||
"tentative": {
|
||||
"loaf-basic.html": [
|
||||
"d289f0dd3427af4d29923d091c332113768b3b1c",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"loaf-buffered.html": [
|
||||
"c7ede8418f3d146de1412f52906e6668e762593a",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"loaf-iframe-popup.html": [
|
||||
"9cdb2c334108743124fcc8306a955277735b9745",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"loaf-timeline.html": [
|
||||
"c434a26ef8d18aa84836dbef56f737df425beb57",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"loaf-toJSON.html": [
|
||||
"f78e95da6d11e25d355d71d26bbc56bf2c967b1f",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"loaf-visibility.html": [
|
||||
"97038e30738d36114fcac0a88fec7a5365509a3b",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true,
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"longtask-timing": {
|
||||
"buffered-flag.window.js": [
|
||||
"a0ba728ed2b791b70a9a7dbd93f953676bc3debf",
|
||||
|
@ -660593,7 +660772,7 @@
|
|||
]
|
||||
],
|
||||
"requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js": [
|
||||
"0efbb2f06b3b75f2d9941797972018691de94d02",
|
||||
"67906708aed7676accb91efe2e2cad926c0d4706",
|
||||
[
|
||||
"storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.html",
|
||||
{
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[hit-test-floats-001.html]
|
||||
[hit-test-floats-001]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[block-in-inline-hittest-float-002.html]
|
||||
[block-in-inline-hittest-float-002]
|
||||
expected: FAIL
|
|
@ -1,3 +1,6 @@
|
|||
[block-in-inline-hittest-relpos-zindex.html]
|
||||
[position: relative; z-index: -1;]
|
||||
expected: FAIL
|
||||
|
||||
[block-in-inline-hittest-relpos-zindex]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[hittest-before-pseudo.html]
|
||||
[Hit-testing text within a pseudo-element flex-item should return the flexbox as the hittest result.]
|
||||
expected: FAIL
|
|
@ -0,0 +1,15 @@
|
|||
[text-wrap-white-space-001.html]
|
||||
[`text-wrap: balance` should be set]
|
||||
expected: FAIL
|
||||
|
||||
[`text-wrap` should not be affected by previous `white-space`]
|
||||
expected: FAIL
|
||||
|
||||
[`white-space` should overwrite previous `text-wrap`]
|
||||
expected: FAIL
|
||||
|
||||
[`text-wrap` should not be affected by `white-space` on the parent]
|
||||
expected: FAIL
|
||||
|
||||
[`white-space` should overwrite `text-wrap` on the parent]
|
||||
expected: FAIL
|
|
@ -4,84 +4,3 @@
|
|||
|
||||
[background-position length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-bottom length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-left length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-right length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-top length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-bottom length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-left length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-right length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[max-width length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[left length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[outline-offset length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[outline-width length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[vertical-align length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
|
|
@ -326,165 +326,3 @@
|
|||
|
||||
[margin-right length(mm) / values]
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[top length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[left length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[color color(rgba) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-weight font-weight(keyword) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-weight font-weight(numeric) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height number(integer) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height number(decimal) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-shadow shadow(shadow) / values]
|
||||
expected: FAIL
|
||||
|
|
|
@ -424,3 +424,273 @@
|
|||
|
||||
[abs(-1turn) should be used-value-equivalent to 1turn]
|
||||
expected: FAIL
|
||||
|
||||
[calc(calc(sign(-0))) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(calc(sign(-0)))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(calc(sign(0))) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(calc(sign(0)))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0px)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0px))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0cm)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0cm))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0mm)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0mm))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0Q)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0Q))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0in)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0in))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0pc)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0pc))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0pt)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0pt))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0em)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0em))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0ex)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0ex))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0ch)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0ch))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0rem)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0rem))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0vh)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0vh))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0vw)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0vw))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0vmin)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0vmin))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0vmax)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0vmax))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0px)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0px))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0cm)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0cm))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0mm)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0mm))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0Q)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0Q))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0in)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0in))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0pc)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0pc))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0pt)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0pt))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0em)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0em))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0ex)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0ex))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0ch)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0ch))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0rem)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0rem))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0vh)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0vh))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0vw)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0vw))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0vmin)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0vmin))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0vmax)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0vmax))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0s)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0s))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0ms)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0ms))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0s)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0s))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0ms)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0ms))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0deg)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0deg))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0grad)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0grad))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0rad)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0rad))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(0turn)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(0turn))), 1) should be used-value-equivalent to 1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0deg)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0deg))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0grad)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0grad))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0rad)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0rad))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[calc(sign(-0turn)) should be used-value-equivalent to 0]
|
||||
expected: FAIL
|
||||
|
||||
[clamp(-1, calc( 1 / sign(sign(-0turn))), 1) should be used-value-equivalent to -1]
|
||||
expected: FAIL
|
||||
|
||||
[sign(10px - 1em) should be used-value-equivalent to 0; fontSize=10px]
|
||||
expected: FAIL
|
||||
|
||||
[sign(10px - 2em) should be used-value-equivalent to -1; fontSize=10px]
|
||||
expected: FAIL
|
||||
|
|
|
@ -154,3 +154,9 @@
|
|||
|
||||
['scale(calc(sign(-1 * infinity)))' as a computed value should serialize as 'matrix(-1, 0, 0, -1, 0, 0)'.]
|
||||
expected: FAIL
|
||||
|
||||
['scale(calc(sign(-1 * NaN)))' as a specified value should serialize as 'scale(calc(NaN))'.]
|
||||
expected: FAIL
|
||||
|
||||
['scale(calc(sign(1 * NaN)))' as a specified value should serialize as 'scale(calc(NaN))'.]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[elementFromPoint-float-in-relative.html]
|
||||
[elementFromPoint-float-in-relative]
|
||||
expected: FAIL
|
|
@ -20,3 +20,6 @@
|
|||
|
||||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
[test some point of the element: top left corner]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[elementsFromPoint-invalid-cases.html]
|
||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||
expected: FAIL
|
|
@ -147,5 +147,5 @@
|
|||
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
|
||||
expected: FAIL
|
||||
|
||||
[border-image sec-fetch-mode - Not sent to non-trustworthy cross-site destination]
|
||||
expected: FAIL
|
||||
[background-image sec-fetch-site - HTTPS downgrade (header not sent)]
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
[005.html]
|
||||
expected: TIMEOUT
|
||||
[Link with onclick navigation and href navigation ]
|
||||
expected: FAIL
|
||||
|
|
|
@ -7,6 +7,3 @@
|
|||
|
||||
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank#foo']
|
||||
expected: FAIL
|
||||
|
||||
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank']
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
[javascript-url-referrer.window.html]
|
||||
expected: TIMEOUT
|
||||
[unsafe-url referrer policy used to create the starting page]
|
||||
expected: FAIL
|
||||
|
||||
[origin referrer policy used to create the starting page]
|
||||
expected: FAIL
|
||||
|
||||
[no-referrer referrer policy used to create the starting page]
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[navigate-to-unparseable-url.html]
|
||||
[location.href setter throws a SyntaxError DOMException for unparseable URLs]
|
||||
expected: FAIL
|
||||
|
||||
[<a> tag navigate fails for unparseable URLs]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[navigation-unload-same-origin.window.html]
|
||||
[Same-origin navigation started from unload handler must be ignored]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[a-click.html]
|
||||
[aElement.click() before the load event must NOT replace]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
|
@ -1,3 +1,4 @@
|
|||
[creating_browsing_context_test_01.html]
|
||||
expected: TIMEOUT
|
||||
[first argument: absolute url]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[canvas.2d.disconnected.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,15 +1,19 @@
|
|||
[supported-elements.html]
|
||||
expected: TIMEOUT
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
[Element with tabindex should support autofocus]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Area element should support autofocus]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Host element with delegatesFocus should support autofocus]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Non-HTMLElement should not support autofocus]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-1.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
[iframe_sandbox_popups_escaping-2.html]
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_escaping-3.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
|
|
@ -170,9 +170,6 @@
|
|||
[multipart/form-data: 0x00 in value (normal form)]
|
||||
expected: FAIL
|
||||
|
||||
[multipart/form-data: Basic test (formdata event)]
|
||||
expected: FAIL
|
||||
|
||||
[multipart/form-data: single quote in value (formdata event)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -172,9 +172,3 @@
|
|||
|
||||
[text/plain: Basic test (formdata event)]
|
||||
expected: FAIL
|
||||
|
||||
[text/plain: 0x00 in name (formdata event)]
|
||||
expected: FAIL
|
||||
|
||||
[text/plain: Basic File test (formdata event)]
|
||||
expected: FAIL
|
||||
|
|
|
@ -8,9 +8,6 @@
|
|||
[application/x-www-form-urlencoded: Basic File test (formdata event)]
|
||||
expected: FAIL
|
||||
|
||||
[application/x-www-form-urlencoded: 0x00 in name (normal form)]
|
||||
expected: FAIL
|
||||
|
||||
[application/x-www-form-urlencoded: 0x00 in value (formdata event)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -80,9 +77,6 @@
|
|||
[application/x-www-form-urlencoded: \\r\\n in filename (normal form)]
|
||||
expected: FAIL
|
||||
|
||||
[application/x-www-form-urlencoded: \\r\\n in filename (formdata event)]
|
||||
expected: FAIL
|
||||
|
||||
[application/x-www-form-urlencoded: \\n\\r in filename (normal form)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[historical.html]
|
||||
[<input name=isindex> should not be supported]
|
||||
expected: FAIL
|
|
@ -1,7 +1,6 @@
|
|||
[promise-rejection-events.html]
|
||||
expected: TIMEOUT
|
||||
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[unhandledrejection: from createImageBitmap which is UA triggered]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[Worker-constructor.html]
|
||||
expected: ERROR
|
|
@ -1,6 +0,0 @@
|
|||
[task_queue_throttling.any.html]
|
||||
[Throttling the performance timeline task queue.]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[task_queue_throttling.any.worker.html]
|
|
@ -0,0 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
<script>
|
||||
const blob = new Blob([1, 2]);
|
||||
const readable = blob.stream()
|
||||
const writable = new WritableStream({}, {
|
||||
size() {
|
||||
let xhr = new XMLHttpRequest()
|
||||
xhr.open("POST", "1", false)
|
||||
xhr.send()
|
||||
}
|
||||
})
|
||||
readable.pipeThrough({ readable, writable })
|
||||
</script>
|
|
@ -0,0 +1,7 @@
|
|||
<!doctype html>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
let a = new SharedWorker("support/fontfaceset-loading-worker.js")
|
||||
a.port.postMessage([], [])
|
||||
})
|
||||
</script>
|
|
@ -0,0 +1,8 @@
|
|||
onconnect = async function(e) {
|
||||
e.ports[0].onmessage = async () => {
|
||||
let a = new FontFace("family_name_0", "url(/fonts/Ahem.ttf?fontfaceset-loading-worker)")
|
||||
self.close()
|
||||
await a.load()
|
||||
let _ = new File([a])
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS Pseudo-Element Test: Color transition from inherited ::first-line style should not crash</title>
|
||||
<link rel="help" href="https://crbug.com/1416821">
|
||||
<style>
|
||||
div::first-line { color: red }
|
||||
span { transition: color 100s; }
|
||||
</style>
|
||||
<div><span>First line</span></div>
|
|
@ -0,0 +1,32 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="help" href="https://w3c.github.io/csswg-drafts/css-text-4/#text-wrap">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<style>
|
||||
#container {
|
||||
width: 20ch;
|
||||
}
|
||||
.balance {
|
||||
text-wrap: balance;
|
||||
}
|
||||
</style>
|
||||
<div id="container"></div>
|
||||
<script>
|
||||
const container = document.getElementById('container');
|
||||
for (const text of [
|
||||
'Balancing should',
|
||||
'Balancing should not change',
|
||||
'Balancing should not change the number of lines.',
|
||||
]) {
|
||||
const normal = document.createElement('div');
|
||||
const balance = document.createElement('div');
|
||||
normal.textContent = text;
|
||||
balance.textContent = text;
|
||||
balance.classList.add('balance');
|
||||
container.appendChild(normal);
|
||||
container.appendChild(balance);
|
||||
test(() => {
|
||||
assert_equals(normal.offsetHeight, balance.offsetHeight);
|
||||
});
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<div style="width: 1px; text-wrap: balance">A</div>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="help" href="https://w3c.github.io/csswg-drafts/css-text-4/#propdef-white-space">
|
||||
<link rel="help" href="https://w3c.github.io/csswg-drafts/css-text-4/#propdef-text-wrap">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<style>
|
||||
.balance {
|
||||
text-wrap: balance;
|
||||
}
|
||||
</style>
|
||||
<div id="balance" class="balance"></div>
|
||||
<script>
|
||||
test(() => {
|
||||
const target = document.getElementById('balance');
|
||||
assert_equals(getComputedStyle(target).textWrap, 'balance');
|
||||
}, "`text-wrap: balance` should be set");
|
||||
</script>
|
||||
|
||||
<style>
|
||||
#text-wrap-after-white-space {
|
||||
white-space: normal;
|
||||
text-wrap: balance;
|
||||
}
|
||||
</style>
|
||||
<div id="text-wrap-after-white-space"></div>
|
||||
<script>
|
||||
test(() => {
|
||||
const target = document.getElementById('text-wrap-after-white-space');
|
||||
assert_equals(getComputedStyle(target).textWrap, 'balance');
|
||||
}, "`text-wrap` should not be affected by previous `white-space`");
|
||||
</script>
|
||||
|
||||
<style>
|
||||
#white-space-after-text-wrap {
|
||||
text-wrap: balance;
|
||||
white-space: normal;
|
||||
}
|
||||
</style>
|
||||
<div id="white-space-after-text-wrap"></div>
|
||||
<script>
|
||||
test(() => {
|
||||
const target = document.getElementById('white-space-after-text-wrap');
|
||||
assert_equals(getComputedStyle(target).textWrap, 'wrap');
|
||||
}, "`white-space` should overwrite previous `text-wrap`");
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.normal {
|
||||
white-space: normal;
|
||||
}
|
||||
</style>
|
||||
<div class="normal">
|
||||
<div id="parent-white-space" class="balance"></div>
|
||||
</div>
|
||||
<script>
|
||||
test(() => {
|
||||
const target = document.getElementById('parent-white-space');
|
||||
assert_equals(getComputedStyle(target).textWrap, 'balance');
|
||||
}, "`text-wrap` should not be affected by `white-space` on the parent");
|
||||
</script>
|
||||
|
||||
<div class="balance">
|
||||
<div id="parent-text-wrap" class="normal"></div>
|
||||
</div>
|
||||
<script>
|
||||
test(() => {
|
||||
const target = document.getElementById('parent-text-wrap');
|
||||
assert_equals(getComputedStyle(target).textWrap, 'wrap');
|
||||
}, "`white-space` should overwrite `text-wrap` on the parent");
|
||||
</script>
|
|
@ -6,8 +6,20 @@
|
|||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="../support/numeric-testcommon.js"></script>
|
||||
<div id="target"></div>
|
||||
<div id="container" style="font-size: 20px">
|
||||
<div id="target"></div>
|
||||
</div>
|
||||
<script>
|
||||
function test_zero(expression, { is_negative }) {
|
||||
test_math_used(`calc(${expression})`, '0', {type:'integer'});
|
||||
// to test zero sign, make it to negative infinity and clamp it between -1 and 1
|
||||
test_math_used(`clamp(-1, calc( 1 / sign(${expression})), 1)`, (is_negative)? '-1' : '1', {type:'integer'});
|
||||
}
|
||||
|
||||
function test_length_equals(value, expected, msgExtra) {
|
||||
test_math_used(value, expected, {msgExtra, type: 'integer'});
|
||||
}
|
||||
|
||||
// Identity tests
|
||||
test_math_used('abs(1)', '1', {type:'integer'});
|
||||
test_math_used('sign(1)', '1', {type:'integer'});
|
||||
|
@ -29,8 +41,8 @@ test_math_used('calc(sign(0.1 - 0.2) - 0.05)', '-1.05', {type:'number', approx:0
|
|||
test_math_used('calc(sign(1) + sign(1) - 0.05)', '1.95', {type:'number', approx:0.1});
|
||||
|
||||
// Test sign for zero
|
||||
test_math_used('calc(sign(-0))', '-0', {type:'integer'});
|
||||
test_math_used('calc(sign(0))', '0', {type:'integer'});
|
||||
test_zero('calc(sign(-0))', {is_negative: true});
|
||||
test_zero('calc(sign(0))', {is_negative: false});
|
||||
|
||||
//Type checking sign
|
||||
test_math_used('sign(1px)', '1', {type:'integer'});
|
||||
|
@ -75,48 +87,48 @@ test_math_used('sign(-1deg)', '-1', {type:'integer'});
|
|||
test_math_used('sign(-1grad)', '-1', {type:'integer'});
|
||||
test_math_used('sign(-1rad)', '-1', {type:'integer'});
|
||||
test_math_used('sign(-1turn)', '-1', {type:'integer'});
|
||||
test_math_used('sign(0px)', '0', {type:'integer'});
|
||||
test_math_used('sign(0cm)', '0', {type:'integer'});
|
||||
test_math_used('sign(0mm)', '0', {type:'integer'});
|
||||
test_math_used('sign(0Q)', '0', {type:'integer'});
|
||||
test_math_used('sign(0in)', '0', {type:'integer'});
|
||||
test_math_used('sign(0pc)', '0', {type:'integer'});
|
||||
test_math_used('sign(0pt)', '0', {type:'integer'});
|
||||
test_math_used('sign(0em)', '0', {type:'integer'});
|
||||
test_math_used('sign(0ex)', '0', {type:'integer'});
|
||||
test_math_used('sign(0ch)', '0', {type:'integer'});
|
||||
test_math_used('sign(0rem)', '0', {type:'integer'});
|
||||
test_math_used('sign(0vh)', '0', {type:'integer'});
|
||||
test_math_used('sign(0vw)', '0', {type:'integer'});
|
||||
test_math_used('sign(0vmin)', '0', {type:'integer'});
|
||||
test_math_used('sign(0vmax)', '0', {type:'integer'});
|
||||
test_math_used('sign(-0px)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0cm)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0mm)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0Q)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0in)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0pc)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0pt)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0em)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0ex)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0ch)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0rem)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0vh)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0vw)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0vmin)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0vmax)', '-0', {type:'integer'});
|
||||
test_math_used('sign(0s)', '0', {type:'integer'});
|
||||
test_math_used('sign(0ms)', '0', {type:'integer'});
|
||||
test_math_used('sign(-0s)', '0', {type:'integer'});
|
||||
test_math_used('sign(-0ms)', '0', {type:'integer'});
|
||||
test_math_used('sign(0deg)', '0', {type:'integer'});
|
||||
test_math_used('sign(0grad)', '0', {type:'integer'});
|
||||
test_math_used('sign(0rad)', '0', {type:'integer'});
|
||||
test_math_used('sign(0turn)', '0', {type:'integer'});
|
||||
test_math_used('sign(-0deg)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0grad)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0rad)', '-0', {type:'integer'});
|
||||
test_math_used('sign(-0turn)', '-0', {type:'integer'});
|
||||
test_zero('sign(0px)', {is_negative: false});
|
||||
test_zero('sign(0cm)', {is_negative: false});
|
||||
test_zero('sign(0mm)', {is_negative: false});
|
||||
test_zero('sign(0Q)', {is_negative: false});
|
||||
test_zero('sign(0in)', {is_negative: false});
|
||||
test_zero('sign(0pc)', {is_negative: false});
|
||||
test_zero('sign(0pt)', {is_negative: false});
|
||||
test_zero('sign(0em)', {is_negative: false});
|
||||
test_zero('sign(0ex)', {is_negative: false});
|
||||
test_zero('sign(0ch)', {is_negative: false});
|
||||
test_zero('sign(0rem)', {is_negative: false});
|
||||
test_zero('sign(0vh)', {is_negative: false});
|
||||
test_zero('sign(0vw)', {is_negative: false});
|
||||
test_zero('sign(0vmin)', {is_negative: false});
|
||||
test_zero('sign(0vmax)', {is_negative: false});
|
||||
test_zero('sign(-0px)', {is_negative: true});
|
||||
test_zero('sign(-0cm)', {is_negative: true});
|
||||
test_zero('sign(-0mm)', {is_negative: true});
|
||||
test_zero('sign(-0Q)', {is_negative: true});
|
||||
test_zero('sign(-0in)', {is_negative: true});
|
||||
test_zero('sign(-0pc)', {is_negative: true});
|
||||
test_zero('sign(-0pt)', {is_negative: true});
|
||||
test_zero('sign(-0em)', {is_negative: true});
|
||||
test_zero('sign(-0ex)', {is_negative: true});
|
||||
test_zero('sign(-0ch)', {is_negative: true});
|
||||
test_zero('sign(-0rem)', {is_negative: true});
|
||||
test_zero('sign(-0vh)', {is_negative: true});
|
||||
test_zero('sign(-0vw)', {is_negative: true});
|
||||
test_zero('sign(-0vmin)', {is_negative: true});
|
||||
test_zero('sign(-0vmax)', {is_negative: true});
|
||||
test_zero('sign(0s)', {is_negative: false});
|
||||
test_zero('sign(0ms)', {is_negative: false});
|
||||
test_zero('sign(-0s)', {is_negative: true});
|
||||
test_zero('sign(-0ms)', {is_negative: true});
|
||||
test_zero('sign(0deg)', {is_negative: false});
|
||||
test_zero('sign(0grad)', {is_negative: false});
|
||||
test_zero('sign(0rad)', {is_negative: false});
|
||||
test_zero('sign(0turn)', {is_negative: false});
|
||||
test_zero('sign(-0deg)', {is_negative: true});
|
||||
test_zero('sign(-0grad)', {is_negative: true});
|
||||
test_zero('sign(-0rad)', {is_negative: true});
|
||||
test_zero('sign(-0turn)', {is_negative: true});
|
||||
|
||||
//Type checking abs
|
||||
test_math_used('abs(1px)', '1px');
|
||||
|
@ -161,4 +173,12 @@ test_math_used('abs(-1deg)', '1deg', {type:'angle', approx:0.001});
|
|||
test_math_used('abs(-1grad)', '1grad', {type:'angle', approx:0.001});
|
||||
test_math_used('abs(-1rad)', '1rad', {type:'angle', approx:0.001});
|
||||
test_math_used('abs(-1turn)', '1turn', {type:'angle', approx:0.001});
|
||||
|
||||
// with relative length
|
||||
document.getElementById('container').style.fontSize = '10px';
|
||||
test_length_equals('sign(10px - 1em)', '0', 'fontSize=10px');
|
||||
test_length_equals('sign(10px - 2em)', '-1', 'fontSize=10px');
|
||||
document.getElementById('container').style.fontSize = '20px';
|
||||
|
||||
|
||||
</script>
|
||||
|
|
|
@ -9,10 +9,7 @@
|
|||
<div id=target></div>
|
||||
<script>
|
||||
function test_serialization(t,s,c) {
|
||||
test_specified_serialization('opacity', t, s);
|
||||
test_specified_serialization('transform', `scale(${t})`, `scale(calc(${c}))`);
|
||||
test_computed_serialization('opacity', t, c);
|
||||
test_computed_serialization('transform', `scale(${t})`, `matrix(${c}, 0, 0, ${c}, 0, 0)`);
|
||||
}
|
||||
|
||||
test_serialization(
|
||||
|
@ -77,4 +74,14 @@ test_serialization(
|
|||
'calc(sign(-1 * infinity))',
|
||||
'calc(-1)',
|
||||
'-1');
|
||||
|
||||
test_serialization(
|
||||
'calc(sign(-1 * NaN))',
|
||||
'calc(NaN)',
|
||||
'NaN');
|
||||
|
||||
test_serialization(
|
||||
'calc(sign(1 * NaN))',
|
||||
'calc(NaN)',
|
||||
'NaN');
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
<!doctype html>
|
||||
<title>Printing with page width and height of zero</title>
|
||||
<link rel="help" href="https://www.w3.org/TR/css-page-3/">
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/8335">
|
||||
<link rel="match" href="zero-size-print-ref.html">
|
||||
<meta name="assert" content="The used page size is the initial value instead of the authored width and height of zero." />
|
||||
<style>
|
||||
html { box-sizing: border-box; height: 100%; border: 2px solid black; }
|
||||
@page {
|
||||
size: 0;
|
||||
}
|
||||
</style>
|
||||
<h1>Chapter 1. Loomings</h1>
|
|
@ -0,0 +1,13 @@
|
|||
<!doctype html>
|
||||
<title>Printing with page width of zero</title>
|
||||
<link rel="help" href="https://www.w3.org/TR/css-page-3/">
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/8335">
|
||||
<link rel="match" href="zero-size-print-ref.html">
|
||||
<meta name="assert" content="The used page size is the initial value instead of the authored width of zero and height of 4in." />
|
||||
<style>
|
||||
html { box-sizing: border-box; height: 100%; border: 2px solid black; }
|
||||
@page {
|
||||
size: 0 4in;
|
||||
}
|
||||
</style>
|
||||
<h1>Chapter 1. Loomings</h1>
|
|
@ -0,0 +1,13 @@
|
|||
<!doctype html>
|
||||
<title>Printing with page height of zero</title>
|
||||
<link rel="help" href="https://www.w3.org/TR/css-page-3/">
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/8335">
|
||||
<link rel="match" href="zero-size-print-ref.html">
|
||||
<meta name="assert" content="The used page size is the initial value instead of the authored width of 4in and height of zero." />
|
||||
<style>
|
||||
html { box-sizing: border-box; height: 100%; border: 2px solid black; }
|
||||
@page {
|
||||
size: 4in 0;
|
||||
}
|
||||
</style>
|
||||
<h1>Chapter 1. Loomings</h1>
|
|
@ -0,0 +1,6 @@
|
|||
<!doctype html>
|
||||
<title>Printing with default page size</title>
|
||||
<style>
|
||||
html { box-sizing: border-box; height: 100%; border: 2px solid black; }
|
||||
</style>
|
||||
<h1>Chapter 1. Loomings</h1>
|
|
@ -0,0 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Case-insensitive parent selector matching</title>
|
||||
</head>
|
||||
<body>
|
||||
<svg width="500" height="100" xmlns="http://www.w3.org/2000/svg">
|
||||
<foreignObject width="500" height="100">
|
||||
<span style="color: green">Test passes if the text is green.</span>
|
||||
</foreignObject>
|
||||
</svg>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,17 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Case-insensitive parent selector matching</title>
|
||||
<link rel="help" href="https://crbug.com/1418575">
|
||||
<link rel="author" title="Steinar H. Gunderson" href="mailto:sesse@chromium.org">
|
||||
<link rel="match" href="case-insensitive-parent-ref.html">
|
||||
<style>FoReIgNobject span { color: green; }</style>
|
||||
</head>
|
||||
<body>
|
||||
<svg width="500" height="100" xmlns="http://www.w3.org/2000/svg">
|
||||
<foreignObject width="500" height="100">
|
||||
<span>Test passes if the text is green.</span>
|
||||
</foreignObject>
|
||||
</svg>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,2 @@
|
|||
suggested_reviewers:
|
||||
- noamr
|
|
@ -0,0 +1,54 @@
|
|||
<!DOCTYPE HTML>
|
||||
<meta charset=utf-8>
|
||||
<title>Long Animation Frame Timing: basic</title>
|
||||
<meta name="timeout" content="long">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/utils.js"></script>
|
||||
|
||||
<body>
|
||||
<h1>Long Animation Frame: basic</h1>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
|
||||
promise_test(async t => {
|
||||
await expect_long_frame(() => busy_wait(), t);
|
||||
}, 'A long busy wait is a long animation frame');
|
||||
|
||||
promise_test(async t => {
|
||||
await expect_long_frame(() => requestAnimationFrame(busy_wait), t);
|
||||
}, 'A long busy wait in a requestAnimationFrame is a long animation frame');
|
||||
|
||||
promise_test(async t => {
|
||||
const segment_duration = very_long_frame_duration / 2;
|
||||
const entry = await expect_long_frame(async () => {
|
||||
busy_wait(segment_duration);
|
||||
await new Promise(resolve => requestAnimationFrame(() => {
|
||||
busy_wait(segment_duration)
|
||||
resolve();
|
||||
}));
|
||||
}, t);
|
||||
|
||||
assert_greater_than_equal(entry.renderStart - entry.startTime, segment_duration);
|
||||
}, 'A long busy wait split between a task and a requestAnimationFrame is a long animation frame');
|
||||
|
||||
promise_test(async t => {
|
||||
const segment_duration = very_long_frame_duration / 3;
|
||||
const entry = await expect_long_frame(async () => {
|
||||
const element = document.createElement("div");
|
||||
document.body.appendChild(element);
|
||||
t.add_cleanup(() => element.remove());
|
||||
busy_wait(segment_duration);
|
||||
requestAnimationFrame(() => {
|
||||
busy_wait(segment_duration);
|
||||
});
|
||||
|
||||
new ResizeObserver(() => {
|
||||
busy_wait(segment_duration);
|
||||
}).observe(element);
|
||||
}, t);
|
||||
assert_greater_than_equal(entry.renderStart - entry.startTime, segment_duration);
|
||||
assert_greater_than_equal(entry.styleAndLayoutStart - entry.renderStart, segment_duration);
|
||||
}, 'ResizeObservers should create a long-frame and affect layoutStartTime');
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1,25 @@
|
|||
<!DOCTYPE HTML>
|
||||
<meta charset=utf-8>
|
||||
<title>Long Animation Frame Timing: basic</title>
|
||||
<meta name="timeout" content="long">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/utils.js"></script>
|
||||
|
||||
<body>
|
||||
<h1>Long Animation Frame: buffered</h1>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
promise_test(async t => {
|
||||
busy_wait(very_long_frame_duration);
|
||||
await new Promise(resolve => t.step_timeout(resolve, 0));
|
||||
const entry = await new Promise(resolve => {
|
||||
new PerformanceObserver(t.step_func((entryList) => {
|
||||
const entry = entryList.getEntries()[0];
|
||||
if (entry.duration >= very_long_frame_duration)
|
||||
resolve(entry);
|
||||
})).observe({type: 'long-animation-frame', buffered: true});
|
||||
});
|
||||
}, 'PerformanceObserver with buffered flag can see previous long-animation-frame entries.');
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1,67 @@
|
|||
<!DOCTYPE HTML>
|
||||
<meta charset=utf-8>
|
||||
<title>Long Animation Frame Timing: iframes</title>
|
||||
<body>
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/common/get-host-info.sub.js"></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<script src="/common/dispatcher/dispatcher.js"></script>
|
||||
<script src="resources/utils.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
|
||||
const host_info = get_host_info();
|
||||
const {ORIGIN, REMOTE_ORIGIN, HTTP_NOTSAMESITE_ORIGIN} = host_info;
|
||||
|
||||
promise_test(async t => {
|
||||
const executor = await prepare_exec_iframe(t, ORIGIN);
|
||||
await expect_no_long_frame(() => executor.execute_script((duration) => {
|
||||
const deadline = performance.now() + duration;
|
||||
while (performance.now() < deadline) {}
|
||||
}, [very_long_frame_duration]), t);
|
||||
}, 'A long busy wait without render in a same-origin iframe is not a long animation frame');
|
||||
|
||||
promise_test(async t => {
|
||||
const executor = await prepare_exec_iframe(t, HTTP_NOTSAMESITE_ORIGIN);
|
||||
await expect_no_long_frame(() => executor.execute_script((duration) => {
|
||||
const deadline = performance.now() + duration;
|
||||
while (performance.now() < deadline) {}
|
||||
}, [very_long_frame_duration]), t);
|
||||
}, 'A long busy wait in a cross-origin iframe is not a long animation frame');
|
||||
|
||||
promise_test(async t => {
|
||||
const executor = await prepare_exec_iframe(t, ORIGIN);
|
||||
await expect_long_frame(() => executor.execute_script(async (duration) => {
|
||||
await new Promise(resolve => window.requestAnimationFrame(resolve));
|
||||
const deadline = performance.now() + duration;
|
||||
while (performance.now() < deadline) {}
|
||||
}, [very_long_frame_duration]), t);
|
||||
}, 'A long busy wait in a same-origin requestAnimationFrame is a long animation frame');
|
||||
|
||||
promise_test(async t => {
|
||||
const executor = await prepare_exec_popup(t, ORIGIN);
|
||||
await expect_no_long_frame(() => executor.execute_script((duration) => {
|
||||
const deadline = performance.now() + duration;
|
||||
while (performance.now() < deadline) {}
|
||||
}), t);
|
||||
}, 'A long busy wait in a same-origin popup is a not long animation frame');
|
||||
|
||||
for (const origin of ["ORIGIN", "REMOTE_ORIGIN", "HTTP_NOTSAMESITE_ORIGIN"]) {
|
||||
promise_test(async t => {
|
||||
const executor = await prepare_exec_iframe(t, host_info[origin]);
|
||||
const entry = await executor.execute_script(async (duration) => {
|
||||
const entryPromise = new Promise(resolve => new PerformanceObserver(list => {
|
||||
resolve(list.getEntries(0));
|
||||
}).observe({entryTypes: ["long-animation-frame"]}));
|
||||
const deadline = performance.now() + duration;
|
||||
while (performance.now() < deadline) {}
|
||||
return entryPromise;
|
||||
}, [very_long_frame_duration]);
|
||||
}, `frames receive own long animation frames (${origin})`);
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1,27 @@
|
|||
<!DOCTYPE HTML>
|
||||
<meta charset=utf-8>
|
||||
<title>Long Animation Frame Timing: basic</title>
|
||||
<meta name="timeout" content="long">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/utils.js"></script>
|
||||
|
||||
<body>
|
||||
<h1>Long Animation Frame: basic</h1>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
promise_test(async t => {
|
||||
busy_wait(very_long_frame_duration);
|
||||
const is_loaf = entry => entry.duration >= very_long_frame_duration &&
|
||||
entry.entryType == "long-animation-frame";
|
||||
|
||||
await new Promise(resolve => t.step_timeout(resolve, 10));
|
||||
const entry_from_all = [...performance.getEntries()].find(is_loaf);
|
||||
const entry_by_type = [...performance.getEntriesByType("long-animation-frame")].find(is_loaf);
|
||||
const entry_by_name = [...performance.getEntriesByName("long-animation-frame")].find(is_loaf);
|
||||
assert_true(!!entry_from_all, "LoAF Entry found");
|
||||
assert_equals(entry_from_all, entry_by_type);
|
||||
assert_equals(entry_from_all, entry_by_name);
|
||||
}, 'LoAF entries are available in the performnace timeline');
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1,44 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
promise_test(async t => {
|
||||
window.onload = () => {
|
||||
// Trigger a long task.
|
||||
const begin = window.performance.now();
|
||||
while (window.performance.now() < begin + 60);
|
||||
};
|
||||
|
||||
assert_implements(window.PerformanceLongAnimationFrameTiming, 'Lon are not supported.');
|
||||
const entry = await new Promise(resolve => new PerformanceObserver(
|
||||
t.step_func(entryList => {
|
||||
const entries = entryList.getEntries();
|
||||
assert_greater_than_equal(entries.length, 1);
|
||||
resolve(entries[0]);
|
||||
})).observe({entryTypes: ["long-animation-frame"]}));
|
||||
|
||||
assert_equals(typeof(entry.toJSON), 'function');
|
||||
const entryJSON = entry.toJSON();
|
||||
assert_equals(typeof(entryJSON), 'object');
|
||||
// Check attributes inheritted from PerformanceEntry.
|
||||
const performanceEntryKeys = [
|
||||
'name',
|
||||
'entryType',
|
||||
'startTime',
|
||||
'duration',
|
||||
'renderStart',
|
||||
'styleAndLayoutStart'
|
||||
];
|
||||
for (const key of performanceEntryKeys) {
|
||||
assert_equals(entryJSON[key], entry[key],
|
||||
`entry.toJSON().${key} should match entry.${key}`);
|
||||
}
|
||||
|
||||
}, 'Test toJSON() in PerformanceLongAnimationFrameTiming');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,26 @@
|
|||
<!DOCTYPE HTML>
|
||||
<meta charset=utf-8>
|
||||
<meta name="timeout" content="long">
|
||||
<title>Long Animation Frame Timing: iframes</title>
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<script src="/page-visibility/resources/window_state_context.js"></script>
|
||||
<script src="resources/utils.js"></script>
|
||||
<body>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
|
||||
promise_test(async t => {
|
||||
const {minimize, restore} = window_state_context(t);
|
||||
await minimize();
|
||||
expect_no_long_frame(busy_wait, t);
|
||||
await restore();
|
||||
expect_long_frame(busy_wait, t);
|
||||
}, 'Invisible windows do not report long animation frames');
|
||||
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1,76 @@
|
|||
const windowLoaded = new Promise(resolve => window.addEventListener('load', resolve));
|
||||
setup(() =>
|
||||
assert_implements(window.PerformanceLongAnimationFrameTiming,
|
||||
'Long animation frames are not supported.'));
|
||||
|
||||
const very_long_frame_duration = 360;
|
||||
|
||||
function loaf_promise() {
|
||||
return new Promise(resolve => {
|
||||
const observer = new PerformanceObserver(entries => {
|
||||
const entry = entries.getEntries()[0];
|
||||
if (entry.duration >= very_long_frame_duration)
|
||||
resolve(entry);
|
||||
});
|
||||
|
||||
observer.observe({entryTypes: ['long-animation-frame']});
|
||||
});
|
||||
}
|
||||
|
||||
const no_long_frame_timeout = very_long_frame_duration * 2;
|
||||
|
||||
function busy_wait(ms_delay = very_long_frame_duration) {
|
||||
const deadline = performance.now() + ms_delay;
|
||||
while (performance.now() < deadline) {}
|
||||
}
|
||||
|
||||
async function expect_long_frame(cb, t) {
|
||||
await windowLoaded;
|
||||
await new Promise(resolve => t.step_timeout(resolve, 0));
|
||||
const timeout = new Promise((resolve, reject) =>
|
||||
t.step_timeout(() => reject("timeout"), no_long_frame_timeout));
|
||||
const receivedLongFrame = loaf_promise();
|
||||
await cb();
|
||||
const entry = await Promise.race([
|
||||
receivedLongFrame,
|
||||
timeout
|
||||
]);
|
||||
return entry;
|
||||
}
|
||||
|
||||
async function expect_no_long_frame(cb, t) {
|
||||
await windowLoaded;
|
||||
for (let i = 0; i < 5; ++i) {
|
||||
const receivedLongFrame = loaf_promise();
|
||||
await cb();
|
||||
const result = await Promise.race([receivedLongFrame,
|
||||
new Promise(resolve => t.step_timeout(() => resolve("timeout"),
|
||||
no_long_frame_timeout))]);
|
||||
if (result === "timeout")
|
||||
return false;
|
||||
}
|
||||
|
||||
throw new Error("Consistently creates long frame");
|
||||
}
|
||||
|
||||
async function prepare_exec_iframe(t, origin) {
|
||||
const iframe = document.createElement("iframe");
|
||||
t.add_cleanup(() => iframe.remove());
|
||||
const url = new URL("/common/dispatcher/remote-executor.html", origin);
|
||||
const uuid = token();
|
||||
url.searchParams.set("uuid", uuid);
|
||||
iframe.src = url.href;
|
||||
document.body.appendChild(iframe);
|
||||
await new Promise(resolve => iframe.addEventListener("load", resolve));
|
||||
return new RemoteContext(uuid);
|
||||
}
|
||||
|
||||
|
||||
async function prepare_exec_popup(t, origin) {
|
||||
const url = new URL("/common/dispatcher/remote-executor.html", origin);
|
||||
const uuid = token();
|
||||
url.searchParams.set("uuid", uuid);
|
||||
const popup = window.open(url);
|
||||
t.add_cleanup(() => popup.close());
|
||||
return new RemoteContext(uuid);
|
||||
}
|
|
@ -29,7 +29,17 @@ self.DirectSocketsServiceTest = (() => {
|
|||
});
|
||||
}
|
||||
|
||||
openUDPSocket(
|
||||
openConnectedUDPSocket(
|
||||
options,
|
||||
receiver,
|
||||
listener) {
|
||||
return Promise.resolve({
|
||||
// return result = net:Error::NOT_IMPLEMENTED (code -11)
|
||||
result: -11
|
||||
});
|
||||
}
|
||||
|
||||
openBoundUDPSocket(
|
||||
options,
|
||||
receiver,
|
||||
listener) {
|
||||
|
|
|
@ -100,7 +100,7 @@ function ReplyPromise(timestamp) {
|
|||
}
|
||||
|
||||
// Returns a promise that resolves when the given frame fires its load event.
|
||||
function ReloadPromise(frame) {
|
||||
function LoadPromise(frame) {
|
||||
return new Promise((resolve) => {
|
||||
frame.addEventListener("load", (event) => {
|
||||
resolve();
|
||||
|
@ -183,11 +183,19 @@ function ObservePermissionChange(frame, args = []) {
|
|||
// Executes `location.reload()` in the given frame. The returned promise
|
||||
// resolves when the frame has finished reloading.
|
||||
function FrameInitiatedReload(frame) {
|
||||
const reload = ReloadPromise(frame);
|
||||
const reload = LoadPromise(frame);
|
||||
frame.contentWindow.postMessage({ command: "reload" }, "*");
|
||||
return reload;
|
||||
}
|
||||
|
||||
// Executes `location.href = url` in the given frame. The returned promise
|
||||
// resolves when the frame has finished navigating.
|
||||
function FrameInitiatedNavigation(frame, url) {
|
||||
const load = LoadPromise(frame);
|
||||
frame.contentWindow.postMessage({ command: "navigate", url }, "*");
|
||||
return load;
|
||||
}
|
||||
|
||||
// Tries to set storage access policy, ignoring any errors.
|
||||
//
|
||||
// Note: to discourage the writing of tests that assume unpartitioned cookie
|
||||
|
|
|
@ -6,19 +6,21 @@
|
|||
|
||||
(async function() {
|
||||
// This is cross-domain from the current document.
|
||||
const wwwAlt = "https://{{hosts[alt][www]}}:{{ports[https][0]}}";
|
||||
const altWww = "https://{{hosts[alt][www]}}:{{ports[https][0]}}";
|
||||
const altRoot = "https://{{hosts[alt][]}}:{{ports[https][0]}}";
|
||||
const responderPath = "/storage-access-api/resources/script-with-cookie-header.py?script=embedded_responder.js";
|
||||
|
||||
promise_test(async (t) => {
|
||||
await MaybeSetStorageAccess(wwwAlt + "/", "*", "blocked");
|
||||
const altWwwResponder = `${altWww}${responderPath}`;
|
||||
const altRootResponder = `${altRoot}${responderPath}`;
|
||||
|
||||
const responder_html = `${wwwAlt}/storage-access-api/resources/script-with-cookie-header.py?script=embedded_responder.js`;
|
||||
const frame = await CreateFrame(responder_html);
|
||||
async function SetUpResponderFrame(t, url) {
|
||||
const frame = await CreateFrame(url);
|
||||
|
||||
await SetPermissionInFrame(frame, [{ name: 'storage-access' }, 'granted']);
|
||||
t.add_cleanup(async () => {
|
||||
await test_driver.delete_all_cookies();
|
||||
await SetPermissionInFrame(frame, [{ name: 'storage-access' }, 'prompt']);
|
||||
await MaybeSetStorageAccess(wwwAlt + "/", "*", "allowed");
|
||||
await MaybeSetStorageAccess("*", "*", "allowed");
|
||||
});
|
||||
|
||||
assert_false(await FrameHasStorageAccess(frame), "frame initially does not have storage access.");
|
||||
|
@ -30,9 +32,53 @@
|
|||
assert_true(await FrameHasStorageAccess(frame), "frame has storage access after request.");
|
||||
assert_true(await CanFrameWriteCookies(frame), "frame can write cookies via JS after request.");
|
||||
|
||||
return frame;
|
||||
}
|
||||
|
||||
promise_test(async (t) => {
|
||||
await MaybeSetStorageAccess("*", "*", "blocked");
|
||||
|
||||
const frame = await SetUpResponderFrame(t, altWwwResponder);
|
||||
|
||||
await FrameInitiatedReload(frame);
|
||||
|
||||
assert_true(await FrameHasStorageAccess(frame), "frame has storage access after refresh.");
|
||||
assert_true(await CanFrameWriteCookies(frame), "frame can write cookies via JS after refresh.");
|
||||
}, "Self-initiated reloads preserve storage access");
|
||||
|
||||
promise_test(async (t) => {
|
||||
await MaybeSetStorageAccess("*", "*", "blocked");
|
||||
|
||||
const frame = await SetUpResponderFrame(t, altWwwResponder);
|
||||
|
||||
await FrameInitiatedNavigation(frame, altWwwResponder);
|
||||
|
||||
assert_true(await FrameHasStorageAccess(frame), "frame has storage access after refresh.");
|
||||
assert_true(await CanFrameWriteCookies(frame), "frame can write cookies via JS after refresh.");
|
||||
}, "Self-initiated same-origin navigations preserve storage access");
|
||||
|
||||
promise_test(async (t) => {
|
||||
await MaybeSetStorageAccess("*", "*", "blocked");
|
||||
|
||||
const frame = await SetUpResponderFrame(t, altWwwResponder);
|
||||
|
||||
await new Promise((resolve) => {
|
||||
frame.addEventListener("load", () => resolve());
|
||||
frame.src = altWwwResponder;
|
||||
});
|
||||
|
||||
assert_false(await FrameHasStorageAccess(frame), "frame does not have storage access after refresh.");
|
||||
assert_false(await CanFrameWriteCookies(frame), "frame cannot write cookies via JS after refresh.");
|
||||
}, "Non-self-initiated same-origin navigations do not preserve storage access");
|
||||
|
||||
promise_test(async (t) => {
|
||||
await MaybeSetStorageAccess("*", "*", "blocked");
|
||||
|
||||
const frame = await SetUpResponderFrame(t, altWwwResponder);
|
||||
|
||||
await FrameInitiatedNavigation(frame, altRootResponder);
|
||||
|
||||
assert_false(await FrameHasStorageAccess(frame), "frame does not have storage access after refresh.");
|
||||
assert_false(await CanFrameWriteCookies(frame), "frame cannot write cookies via JS after refresh.");
|
||||
}, "Self-initiated cross-origin navigations do not preserve storage access");
|
||||
})();
|
||||
|
|
|
@ -40,6 +40,9 @@ window.addEventListener("message", async (event) => {
|
|||
case "reload":
|
||||
window.location.reload();
|
||||
break;
|
||||
case "navigate":
|
||||
window.location.href = event.data.url;
|
||||
break;
|
||||
case "httpCookies":
|
||||
// The `httpCookies` variable is defined/set by
|
||||
// script-with-cookie-header.py.
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,35 +1,35 @@
|
|||
{
|
||||
"tests": [
|
||||
{
|
||||
"name": "softmax float32 2D tensor",
|
||||
"name": "softmax float32 2D tensor all positive",
|
||||
"inputs": {
|
||||
"x": {
|
||||
"shape": [4, 6],
|
||||
"data": [
|
||||
-9.602943250149636,
|
||||
5.353947088147631,
|
||||
4.982506021190005,
|
||||
-1.8709681620943286,
|
||||
2.275207739606868,
|
||||
-1.9403444022539098,
|
||||
1.8985638253724968,
|
||||
1.7877445512108103,
|
||||
-7.243864108734894,
|
||||
7.827657028853274,
|
||||
-2.4196847673132726,
|
||||
-8.018804523844905,
|
||||
-3.1493873901132474,
|
||||
7.674345195428224,
|
||||
-5.183967275728079,
|
||||
-7.301743057626533,
|
||||
-7.121610082852072,
|
||||
-8.29701166999875,
|
||||
-5.77890866334104,
|
||||
-9.76213424697228,
|
||||
7.332167409724249,
|
||||
3.9077721241449215,
|
||||
-5.2970783047100545,
|
||||
5.0440509491607965
|
||||
7.903734730203054,
|
||||
6.358251623091922,
|
||||
4.833756774572475,
|
||||
9.579165187926348,
|
||||
0.21071856783621445,
|
||||
4.554958961778823,
|
||||
7.150174113718282,
|
||||
8.330297576341172,
|
||||
1.535985791562966,
|
||||
6.633619497318013,
|
||||
1.45393689965033,
|
||||
0.21341864769940821,
|
||||
5.257819475802503,
|
||||
8.1921378632378,
|
||||
8.161730206898543,
|
||||
2.8744343334015565,
|
||||
8.950733525100087,
|
||||
6.111632812590415,
|
||||
1.6371468489476149,
|
||||
0.2762612074523485,
|
||||
5.028227187056009,
|
||||
3.898326029997037,
|
||||
2.8967114227178836,
|
||||
6.8894703393234575
|
||||
],
|
||||
"type": "float32"
|
||||
}
|
||||
|
@ -38,30 +38,96 @@
|
|||
"name": "output",
|
||||
"shape": [4, 6],
|
||||
"data": [
|
||||
1.8385014755040174e-7,
|
||||
0.575650691986084,
|
||||
0.3970489799976349,
|
||||
0.0004191970219835639,
|
||||
0.026489850133657455,
|
||||
0.0003911005624104291,
|
||||
0.00264744833111763,
|
||||
0.00236973213031888,
|
||||
2.833488679243601e-7,
|
||||
0.9949471354484558,
|
||||
0.00003527247827150859,
|
||||
1.3054766156983533e-7,
|
||||
0.000019920609702239744,
|
||||
0.9999766945838928,
|
||||
0.0000026043292109534377,
|
||||
3.1329790317613515e-7,
|
||||
3.7513549955292547e-7,
|
||||
1.1580249292819644e-7,
|
||||
0.0000017836379129221314,
|
||||
3.322107744452296e-8,
|
||||
0.8818095922470093,
|
||||
0.028719622641801834,
|
||||
0.000002887773234760971,
|
||||
0.08946608752012253
|
||||
0.15068615972995758,
|
||||
0.03212761878967285,
|
||||
0.006995180621743202,
|
||||
0.8048291206359863,
|
||||
0.00006871300138300285,
|
||||
0.005293202120810747,
|
||||
0.2057899534702301,
|
||||
0.6698001027107239,
|
||||
0.0007502624066546559,
|
||||
0.1227685883641243,
|
||||
0.0006911618984304368,
|
||||
0.00019990770670119673,
|
||||
0.012398251332342625,
|
||||
0.23319464921951294,
|
||||
0.22621041536331177,
|
||||
0.0011435872875154018,
|
||||
0.4979347288608551,
|
||||
0.029118351638317108,
|
||||
0.004253828432410955,
|
||||
0.001090824487619102,
|
||||
0.12633030116558075,
|
||||
0.040812913328409195,
|
||||
0.014990009367465973,
|
||||
0.8125221133232117
|
||||
],
|
||||
"type": "float32"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "softmax float32 2D tensor all negative",
|
||||
"inputs": {
|
||||
"x": {
|
||||
"shape": [4, 6],
|
||||
"data": [
|
||||
-3.3118434934513763,
|
||||
-3.338954812269648,
|
||||
-3.4102789638525355,
|
||||
-6.697192980301335,
|
||||
-7.896223320202411,
|
||||
-3.3081689006635866,
|
||||
-3.2309720485303473,
|
||||
-4.315771351061817,
|
||||
-9.311088112018716,
|
||||
-3.9236627720798856,
|
||||
-3.7807213277512064,
|
||||
-6.034926915403203,
|
||||
-3.9196677453714273,
|
||||
-2.223484249593408,
|
||||
-9.326531526135806,
|
||||
-1.4882492282868132,
|
||||
-6.302842393071306,
|
||||
-5.531475594479687,
|
||||
-1.8421411696525603,
|
||||
-4.994808274460977,
|
||||
-9.527291818875955,
|
||||
-4.985682906583053,
|
||||
-8.421041200931548,
|
||||
-6.235629579015209
|
||||
],
|
||||
"type": "float32"
|
||||
}
|
||||
},
|
||||
"expected": {
|
||||
"name": "output",
|
||||
"shape": [4, 6],
|
||||
"data": [
|
||||
0.2546302080154419,
|
||||
0.24781952798366547,
|
||||
0.2307596504688263,
|
||||
0.008623254485428333,
|
||||
0.002599793951958418,
|
||||
0.2555675804615021,
|
||||
0.40352678298950195,
|
||||
0.13637976348400116,
|
||||
0.0009232329903170466,
|
||||
0.20185552537441254,
|
||||
0.23287305235862732,
|
||||
0.024441635236144066,
|
||||
0.0551743283867836,
|
||||
0.3008708655834198,
|
||||
0.0002474947541486472,
|
||||
0.6276082992553711,
|
||||
0.0050902292132377625,
|
||||
0.011008745059370995,
|
||||
0.9090295433998108,
|
||||
0.0388500951230526,
|
||||
0.00041779119055718184,
|
||||
0.039206232875585556,
|
||||
0.0012629841221496463,
|
||||
0.011233373545110226
|
||||
],
|
||||
"type": "float32"
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue