mirror of
https://github.com/servo/servo.git
synced 2025-08-04 05:00:08 +01:00
Update web-platform-tests to revision 589d1d54b73d37f1efde64f75cc408bdd640b44a
This commit is contained in:
parent
8ab389c10c
commit
1c7e2d22cf
122 changed files with 1953 additions and 415 deletions
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -2,12 +2,6 @@
|
|||
[.flexbox > img 1]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 2]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 3]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 5]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -20,24 +14,9 @@
|
|||
[.flexbox > img 8]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 9]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 14]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 15]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 16]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 17]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 18]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 11]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,12 +2,6 @@
|
|||
[.flexbox > img 1]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 2]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 3]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 5]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -20,24 +14,9 @@
|
|||
[.flexbox > img 8]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 9]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 14]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 15]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 16]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 17]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 18]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 11]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,3 +2,6 @@
|
|||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[elementsFromPoint-invalid-cases.html]
|
||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[matchMedia-display-none-iframe.html]
|
||||
expected: ERROR
|
|
@ -1,2 +0,0 @@
|
|||
[HTMLMediaElement.html]
|
||||
expected: TIMEOUT
|
|
@ -312,21 +312,24 @@
|
|||
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<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 */*]
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,3 +11,9 @@
|
|||
[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%20'NosniFF']
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_2.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[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,16 +1,20 @@
|
|||
[supported-elements.html]
|
||||
expected: TIMEOUT
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Element with tabindex should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
[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: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_escaping-3.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,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[form-double-submit-2.html]
|
||||
[preventDefault should allow onclick submit() to succeed]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[module-static-import-delayed.html]
|
||||
[document.write in an imported module]
|
||||
expected: FAIL
|
||||
|
|
@ -4,5 +4,5 @@
|
|||
expected: TIMEOUT
|
||||
|
||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[realtimeanalyser-fft-scaling.html]
|
||||
expected: TIMEOUT
|
||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -8,9 +8,6 @@
|
|||
[XRSystem interface: operation isSessionSupported(XRSessionMode)]
|
||||
expected: FAIL
|
||||
|
||||
[XRInputSourceArray interface: iterable<XRInputSource>]
|
||||
expected: FAIL
|
||||
|
||||
[XRReferenceSpaceEvent interface: existence and properties of interface prototype object's @@unscopables property]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -251,9 +248,6 @@
|
|||
[XRBoundedReferenceSpace interface object name]
|
||||
expected: FAIL
|
||||
|
||||
[XRWebGLLayer interface: attribute ignoreDepthValues]
|
||||
expected: FAIL
|
||||
|
||||
[XRRenderState interface: xrRenderState must inherit property "depthFar" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -275,33 +269,15 @@
|
|||
[XRSession interface: operation end()]
|
||||
expected: FAIL
|
||||
|
||||
[XRLayer interface: existence and properties of interface prototype object]
|
||||
expected: FAIL
|
||||
|
||||
[XRLayer interface: existence and properties of interface object]
|
||||
expected: FAIL
|
||||
|
||||
[XRLayer interface object name]
|
||||
expected: FAIL
|
||||
|
||||
[XRLayer interface: existence and properties of interface prototype object's "constructor" property]
|
||||
expected: FAIL
|
||||
|
||||
[XRWebGLLayer interface: existence and properties of interface object]
|
||||
expected: FAIL
|
||||
|
||||
[XRWebGLLayer interface: existence and properties of interface prototype object]
|
||||
expected: FAIL
|
||||
|
||||
[XRLayer interface object length]
|
||||
expected: FAIL
|
||||
|
||||
[XRLayer interface: existence and properties of interface prototype object's @@unscopables property]
|
||||
expected: FAIL
|
||||
|
||||
[XRSession interface: xrSession must inherit property "cancelAnimationFrame(unsigned long)" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[XRSession interface: calling cancelAnimationFrame(unsigned long) on xrSession with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[XRView interface: attribute recommendedViewportScale]
|
||||
expected: FAIL
|
||||
|
||||
[XRView interface: operation requestViewportScale(double?)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -567,6 +567,13 @@
|
|||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"feimage-target-child-reference-crash.html": [
|
||||
"eef96ef094d913fb9423616af9177ddfd932796c",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
|
@ -141077,6 +141084,19 @@
|
|||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"fontface-override-descriptors.html": [
|
||||
"40de722981221ff08a4c8f381de8a69e75598979",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-font-loading/fontface-override-descriptors-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"css-fonts": {
|
||||
|
@ -156469,6 +156489,123 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"baseline-000.html": [
|
||||
"e01e9de1dd124af08eb5a2aa07f36254769375a7",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-multicol/baseline-000-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"baseline-001.html": [
|
||||
"cd27731f4f4f3bde5c43912d50f6bb75bb71d328",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-multicol/baseline-001-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"baseline-002.html": [
|
||||
"127ecd56fb50f1114ad01b18d1a2a6765d47ea7b",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-multicol/baseline-002-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"baseline-003.html": [
|
||||
"7d1f252d472ed986ea5047e46336053d3b1c3e01",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-multicol/baseline-003-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"baseline-004.html": [
|
||||
"b14d42761c76df1ef9c53fa07cae23536e9935e8",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-multicol/baseline-004-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"baseline-005.html": [
|
||||
"e1bf253dbce7fa932fee883a38f6757f67ca7b7f",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-multicol/baseline-005-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"baseline-006.html": [
|
||||
"c55ed730258050f7d73429ddc76be4fd24749961",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-multicol/baseline-006-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"baseline-007.html": [
|
||||
"be886e919da95a0f797bbcb719993d2e59c22c16",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-multicol/baseline-007-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"baseline-008.html": [
|
||||
"89381ab3d5950bb6487d3c78678ce2eb4057b9fe",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-multicol/baseline-008-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"change-intrinsic-width.html": [
|
||||
"3df3e1ebc8f9b5780dc858a878bca13dbedcdb35",
|
||||
[
|
||||
|
@ -186901,7 +187038,7 @@
|
|||
]
|
||||
],
|
||||
"text-decoration-thickness-scroll-001.html": [
|
||||
"acc829dc66d75e776dbe4ca5ad2976576c5c3241",
|
||||
"283e28793d0ea778f30e904d986626fde596e29a",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -187304,7 +187441,7 @@
|
|||
]
|
||||
],
|
||||
"text-underline-offset-scroll-001.html": [
|
||||
"6fb53aa421ab8a869a6e43125b9b04badc1dad10",
|
||||
"ee521fa215c7b9102ec6a6805c2866bf433c10a4",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -246079,7 +246216,20 @@
|
|||
{}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"svg-child-will-change-transform-invalidation.html": [
|
||||
"962ba5abeb7ca711551fdf30de45de81083e58ae",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/svg/painting/svg-child-will-change-transform-invalidation-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"path": {
|
||||
"bearing": {
|
||||
|
@ -297993,6 +298143,10 @@
|
|||
"513867b3503042886e51312bcfec20967f7384d4",
|
||||
[]
|
||||
],
|
||||
"fontface-override-descriptors-ref.html": [
|
||||
"4a6d26ead980c5cfb7e25e5eb4266638a3f5c1eb",
|
||||
[]
|
||||
],
|
||||
"resources": {
|
||||
"GenI102.woff2": [
|
||||
"117d4a8fe7f8429d4eb97089e2f1334e1ff7bec9",
|
||||
|
@ -307391,6 +307545,42 @@
|
|||
"aa0ea5595d067d1c8bfc21f604ff2d662bef155a",
|
||||
[]
|
||||
],
|
||||
"baseline-000-ref.html": [
|
||||
"aba812bb9d8b2ce166e13d7b89a24b6f0ff15b6a",
|
||||
[]
|
||||
],
|
||||
"baseline-001-ref.html": [
|
||||
"181f7bafec331977d9cc0fb2b291b6d4ce3dc419",
|
||||
[]
|
||||
],
|
||||
"baseline-002-ref.html": [
|
||||
"6de99d0767250a1e103dd5afa4da9b00c35a1ba3",
|
||||
[]
|
||||
],
|
||||
"baseline-003-ref.html": [
|
||||
"e031f1aeae2890bb8520a3a31ef11d8a72676692",
|
||||
[]
|
||||
],
|
||||
"baseline-004-ref.html": [
|
||||
"c1d72cb01580be376d3a874462357a2778aae9a4",
|
||||
[]
|
||||
],
|
||||
"baseline-005-ref.html": [
|
||||
"d5a382740f570c23ddbeefcccf067dbcae82caa4",
|
||||
[]
|
||||
],
|
||||
"baseline-006-ref.html": [
|
||||
"e229db9cedac5ab4b27c1d33a2a13af08688ef97",
|
||||
[]
|
||||
],
|
||||
"baseline-007-ref.html": [
|
||||
"dc6562cd70e56e739cab5fdab60ef89c2af8a2b8",
|
||||
[]
|
||||
],
|
||||
"baseline-008-ref.html": [
|
||||
"181f7bafec331977d9cc0fb2b291b6d4ce3dc419",
|
||||
[]
|
||||
],
|
||||
"column-balancing-paged-001-print-ref.html": [
|
||||
"af1a86b1e73a49e488faaba1741aae9afe63f28f",
|
||||
[]
|
||||
|
@ -325756,7 +325946,7 @@
|
|||
[]
|
||||
],
|
||||
"testdriver.md": [
|
||||
"63608a71c27831cdae45fef5c85fad8f0d792c82",
|
||||
"8eec38729f41b40a5e1cf073c9e8bba99c6f5efc",
|
||||
[]
|
||||
],
|
||||
"testharness-api.md": [
|
||||
|
@ -333580,7 +333770,7 @@
|
|||
},
|
||||
"resources": {
|
||||
"dispatcher.js": [
|
||||
"44571722770a87fa7491b6be93ec59350c232f5e",
|
||||
"23c5ee97b71d2d2169f8d396d644c69550ce206f",
|
||||
[]
|
||||
],
|
||||
"dispatcher.py": [
|
||||
|
@ -333591,6 +333781,10 @@
|
|||
"e97e18aca4bd6fdff1181310aa2d543110980cc9",
|
||||
[]
|
||||
],
|
||||
"redirect.py": [
|
||||
"21a3dec9d224c1fca4a8815d9830d392c44cd18b",
|
||||
[]
|
||||
],
|
||||
"report.py": [
|
||||
"8e5ec6d1b9b14168c92eedd6e9098e51a61f31c8",
|
||||
[]
|
||||
|
@ -343215,6 +343409,14 @@
|
|||
[]
|
||||
]
|
||||
},
|
||||
"click_child.html": [
|
||||
"5899841c4c1bcc9181f71b4b8699ded57cfe93fd",
|
||||
[]
|
||||
],
|
||||
"click_outer_child.html": [
|
||||
"ae4944635f00fb400fa8345a77bfb3b62766bc49",
|
||||
[]
|
||||
],
|
||||
"file_upload.py": [
|
||||
"9c4dd75438454b852a1590018361ee682f1106df",
|
||||
[]
|
||||
|
@ -343963,7 +344165,7 @@
|
|||
[]
|
||||
],
|
||||
"webxr.idl": [
|
||||
"81e42e908cb9368dc05bc176bb3ec6fb9613dade",
|
||||
"c1b7175765d788b9981d5bd0a6640b46cafb7cb2",
|
||||
[]
|
||||
],
|
||||
"worklets.idl": [
|
||||
|
@ -344188,7 +344390,7 @@
|
|||
]
|
||||
},
|
||||
"lint.ignore": [
|
||||
"c740932e60ad5dc6939e7a41dc7d92534d81a5e4",
|
||||
"ae6c07b877cb8040d653b164438ce5408ae09136",
|
||||
[]
|
||||
],
|
||||
"loading": {
|
||||
|
@ -344952,7 +345154,7 @@
|
|||
],
|
||||
"resources": {
|
||||
"common.js": [
|
||||
"6da98746ecd0939295e4463ef7af580f29111efa",
|
||||
"3b246719799d2f963bc5cb4cd12500bba62ecb08",
|
||||
[]
|
||||
],
|
||||
"iframe.redirect.sub.html": [
|
||||
|
@ -344978,6 +345180,10 @@
|
|||
"window.sub.html": [
|
||||
"c2540943828ce9fd9db463ad4f33c643c6f1eadf",
|
||||
[]
|
||||
],
|
||||
"worker.js": [
|
||||
"bc194a854cd93528930b49ff2a3051e63d4ad43e",
|
||||
[]
|
||||
]
|
||||
}
|
||||
},
|
||||
|
@ -349693,6 +349899,10 @@
|
|||
"313d77b977156dfc8a6e31ccce547064f2c41648",
|
||||
[]
|
||||
],
|
||||
"async-test-return-restrictions.html": [
|
||||
"0fde2e24223f01753294656ea1baa427c3ff9f4a",
|
||||
[]
|
||||
],
|
||||
"basic.html": [
|
||||
"d52082f2e076de0458b689750523b3d10646f4e0",
|
||||
[]
|
||||
|
@ -349702,7 +349912,7 @@
|
|||
[]
|
||||
],
|
||||
"exceptional-cases.html": [
|
||||
"2be4dacaaec8ae53e63d704e842d32968a424b4b",
|
||||
"4054d0311d2de5a83c43bc076d0f79e8c601e474",
|
||||
[]
|
||||
],
|
||||
"format-value.html": [
|
||||
|
@ -349730,7 +349940,7 @@
|
|||
[]
|
||||
],
|
||||
"test-return-restrictions.html": [
|
||||
"b846d4dc4300a990edf7a905f301dcaf75bee18c",
|
||||
"0295c5214dc22beba9791caf8cdffc869e07f1d8",
|
||||
[]
|
||||
],
|
||||
"throwing-assertions.html": [
|
||||
|
@ -349777,7 +349987,7 @@
|
|||
[]
|
||||
],
|
||||
"testdriver.js": [
|
||||
"4d373c9281d85e6ff37a6d0dfe4cdc2fc9c10787",
|
||||
"165147d1430bfe990da2c8d3d601267dbe5143af",
|
||||
[]
|
||||
],
|
||||
"testdriver.js.headers": [
|
||||
|
@ -349785,7 +349995,7 @@
|
|||
[]
|
||||
],
|
||||
"testharness.js": [
|
||||
"61eadfeb6541a974522bf9890ff5f68fd6cb5d5e",
|
||||
"2c7dcd8df4aa59043cdd14d37ac9cb38f14c8e89",
|
||||
[]
|
||||
],
|
||||
"testharness.js.headers": [
|
||||
|
@ -353534,7 +353744,11 @@
|
|||
"610a3ddb2d21da119fb4a53f5f351dff0190880c",
|
||||
[]
|
||||
]
|
||||
}
|
||||
},
|
||||
"svg-child-will-change-transform-invalidation-ref.html": [
|
||||
"0d760d18dce03df5917086ccb0253a8ced421e36",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"path": {
|
||||
"bearing": {
|
||||
|
@ -354214,7 +354428,7 @@
|
|||
],
|
||||
"tasks": {
|
||||
"test.yml": [
|
||||
"c3fccff065555c25961efa6599c32b3a6d495e93",
|
||||
"1b5c7acfd743dd613fb667acb19d594b0edccce4",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -354348,7 +354562,7 @@
|
|||
[]
|
||||
],
|
||||
"lint.py": [
|
||||
"bb49d8970d96dfe6767fcefdf1eea183e6bbccbd",
|
||||
"5027da705774f8d306e4d491608e562daa378d0f",
|
||||
[]
|
||||
],
|
||||
"rules.py": [
|
||||
|
@ -360575,7 +360789,7 @@
|
|||
[]
|
||||
],
|
||||
"client.py": [
|
||||
"1a4b6498312d652b4a9d839e2076dbb7d8b0f9f5",
|
||||
"adc9b3a3f705e4624408ed74b581478fd2422cd8",
|
||||
[]
|
||||
],
|
||||
"error.py": [
|
||||
|
@ -360602,7 +360816,7 @@
|
|||
[]
|
||||
],
|
||||
"browser.py": [
|
||||
"6f9da16c50bea6f073421c99e5050ed9eedb71b8",
|
||||
"35f60d1620beab37f93a43da72a927d3ea8ea1eb",
|
||||
[]
|
||||
],
|
||||
"commands.json": [
|
||||
|
@ -360638,7 +360852,7 @@
|
|||
[]
|
||||
],
|
||||
"run.py": [
|
||||
"8edaa60ab03bf19339aa0773789dd8bdf3755b54",
|
||||
"f289e097753f40767c8d3c28848e6ac8a428f2c5",
|
||||
[]
|
||||
],
|
||||
"testfiles.py": [
|
||||
|
@ -360651,7 +360865,7 @@
|
|||
[]
|
||||
],
|
||||
"test_browser.py": [
|
||||
"350ee9b5eaee3e23454a71202480e28f14330a0a",
|
||||
"0abdb9d45b875f5712b14ba20b7a9c8e07a026bf",
|
||||
[]
|
||||
],
|
||||
"test_install.py": [
|
||||
|
@ -360984,7 +361198,7 @@
|
|||
[]
|
||||
],
|
||||
"edgechromium.py": [
|
||||
"5c51f066f0441321660cab96f6de51af868d310b",
|
||||
"0bcb18cdc0cca64376906e9156b07c4a9cc7dcdb",
|
||||
[]
|
||||
],
|
||||
"epiphany.py": [
|
||||
|
@ -361056,11 +361270,11 @@
|
|||
[]
|
||||
],
|
||||
"actions.py": [
|
||||
"fc43dd665a2f3bc5576cb535f29d49abbc9593fd",
|
||||
"b11d30bb94aa7c2747fcc4dcfb61292f7678e273",
|
||||
[]
|
||||
],
|
||||
"base.py": [
|
||||
"b5820a3808563675e57499a26e6dbca3998a5437",
|
||||
"0247b3feed2b00d8de7da1dbc1c0da4f3841e5bd",
|
||||
[]
|
||||
],
|
||||
"executorchrome.py": [
|
||||
|
@ -361080,7 +361294,7 @@
|
|||
[]
|
||||
],
|
||||
"executormarionette.py": [
|
||||
"9c1f4f366d5fe782b772b79d3f6d4978ada010ac",
|
||||
"e7c9726974b31118bb1dc6027feb9f817dd37563",
|
||||
[]
|
||||
],
|
||||
"executoropera.py": [
|
||||
|
@ -361104,7 +361318,7 @@
|
|||
[]
|
||||
],
|
||||
"executorwebdriver.py": [
|
||||
"ad79600aeb8f943f5c5621102df8b6e701eed303",
|
||||
"139c475ce44ed29608d68509a88ba1b4c4aa932c",
|
||||
[]
|
||||
],
|
||||
"executorwebkit.py": [
|
||||
|
@ -361116,7 +361330,7 @@
|
|||
[]
|
||||
],
|
||||
"protocol.py": [
|
||||
"3f0e44339f9b5499b22e40fc5c4ee4e044691478",
|
||||
"1c85c0f8b963482e8da72e7a793830e0d49b29be",
|
||||
[]
|
||||
],
|
||||
"pytestrunner": {
|
||||
|
@ -361227,7 +361441,7 @@
|
|||
[]
|
||||
],
|
||||
"testdriver-extra.js": [
|
||||
"5001b004f2e199d864810e316ab8e3a80044a50f",
|
||||
"241fc83395152fc9188b791e1f8e1ab9a3d3a542",
|
||||
[]
|
||||
],
|
||||
"testdriver-vendor.js": [
|
||||
|
@ -396595,28 +396809,28 @@
|
|||
]
|
||||
],
|
||||
"image-as-flexitem-size-003.html": [
|
||||
"03a9a6e3547ee9a4421d4624efd1371a237c8ad7",
|
||||
"21a63069ed120df876948a8eb406f84074ed1bb0",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"image-as-flexitem-size-003v.html": [
|
||||
"fd728027e0cfb78162df586320bcb8cb284105a2",
|
||||
"4b957e586a2ba067b862f4622d698fee1bc9fbd0",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"image-as-flexitem-size-004.html": [
|
||||
"15e9f729271aecf945896a0af3263ee42415f0c3",
|
||||
"36cb048e2ec2fbaa698022f2f90660afe6936eec",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"image-as-flexitem-size-004v.html": [
|
||||
"10e871a1c0eacf00a45aed2e594c14daa6b685e2",
|
||||
"16cadce4b96cdf9d06c28e718b72274393698ef9",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -397207,6 +397421,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"fontface-override-descriptor-getter-setter.html": [
|
||||
"a674c22285af20e24a26cfcd3fb590d9663b8c25",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"fontfaceset-load-css-wide-keywords.html": [
|
||||
"b85b92bd15e387db3dacd93b325f7f7b4d8d80db",
|
||||
[
|
||||
|
@ -418373,7 +418594,7 @@
|
|||
]
|
||||
],
|
||||
"pseudo-class-defined.html": [
|
||||
"ed12830d5a9582dbf3ec30c74a43fe381221a139",
|
||||
"f5bf2750a058b2f0efdd3abef1f37ebd4fb8fbb1",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -461887,7 +462108,7 @@
|
|||
"reporting": {
|
||||
"access-reporting": {
|
||||
"access-from-coop-page-to-openee_coop-ro.https.html": [
|
||||
"7adca0ae67a3a7f9f5aa90803c712f1cd0a2a8e9",
|
||||
"481b9294377c3fe4f0b49b3aebe04528bd39d4a2",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -461896,7 +462117,7 @@
|
|||
]
|
||||
],
|
||||
"access-from-coop-page-to-openee_coop-ro_cross-origin.https.html": [
|
||||
"8231639241018c83c42dc958c4970fb374db98b7",
|
||||
"a78c75eaae6edf7d60ef3aeae2af52002209ba52",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -461905,7 +462126,7 @@
|
|||
]
|
||||
],
|
||||
"access-from-coop-page-to-opener_coop-ro.https.html": [
|
||||
"264561a93a85a2536135a811010194c9f9cb91fe",
|
||||
"9cc92dcd9617608ac428480608272134871c6c57",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -461914,7 +462135,7 @@
|
|||
]
|
||||
],
|
||||
"access-from-coop-page-to-opener_coop-ro_cross-origin.https.html": [
|
||||
"8510334df16261609561aa5be3cd0f422347d6c0",
|
||||
"39a58331259f5e1de882d265f89f44e317800c08",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -461941,7 +462162,7 @@
|
|||
]
|
||||
],
|
||||
"access-to-coop-page-from-openee_coop-ro.https.html": [
|
||||
"dbd710662baf216c179d5a061e9912c28f60d87c",
|
||||
"0c63c067798f2d8776f0a97020dfdee3575a9de9",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -461950,7 +462171,7 @@
|
|||
]
|
||||
],
|
||||
"access-to-coop-page-from-openee_coop-ro_cross-origin.https.html": [
|
||||
"9ee8589c16edb34212a22c8feb3fa335a2309c84",
|
||||
"a5859228077039dab62341059f6c591a7eb97f50",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -461959,7 +462180,7 @@
|
|||
]
|
||||
],
|
||||
"access-to-coop-page-from-opener_coop-ro.https.html": [
|
||||
"41012fdb55a0e4cbea98eb1ab978ba63ad7b2c62",
|
||||
"79f20b149f0674b8b86522498bed8075f4c57204",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -461968,7 +462189,7 @@
|
|||
]
|
||||
],
|
||||
"access-to-coop-page-from-opener_coop-ro_cross-origin.https.html": [
|
||||
"1712e153b6dbec63ee6183fd44311651be59a569",
|
||||
"ea3fa0b21bf3652edbdacfc17860f3862f295063",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -480675,6 +480896,33 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"click_iframe.html": [
|
||||
"167a91afcfaa3d4e9a023adf5bbbe0aa4c7c3bf6",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"click_nested.html": [
|
||||
"378b9e8c0f1411afdf7b93f7e93c03d05af227c7",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"click_window.html": [
|
||||
"614a92478e07d51e48c420d5fa253338a87378b2",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"file_upload.sub.html": [
|
||||
"0490e89c422b851653d760cdb38855b2ce6816a6",
|
||||
[
|
||||
|
@ -480774,7 +481022,7 @@
|
|||
]
|
||||
],
|
||||
"input-events-get-target-ranges-backspace.tentative.html": [
|
||||
"6967fa746c6fbcd4da6969ab040fc6c7244a7481",
|
||||
"50d5cb96e84a8400fd961d7221b551b536dbcc57",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -480784,7 +481032,7 @@
|
|||
]
|
||||
],
|
||||
"input-events-get-target-ranges-forwarddelete.tentative.html": [
|
||||
"dd349fc444d7e51c424b3bc94bd81fca55ab3bce",
|
||||
"03518d54e42e5aea5ed51635a4fb088d2428ef86",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -483717,6 +483965,29 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"main-frame-and-worker.tentative.window.js": [
|
||||
"514a4ed067315433c5a368fc7d065b415a4e8229",
|
||||
[
|
||||
"measure-memory/main-frame-and-worker.tentative.window.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"script",
|
||||
"/common/get-host-info.sub.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"./resources/common.js"
|
||||
],
|
||||
[
|
||||
"timeout",
|
||||
"long"
|
||||
]
|
||||
],
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"main-frame.tentative.window.js": [
|
||||
"0a34abb9246f0c218c26cedd99bebbf2f01aeaf0",
|
||||
[
|
||||
|
@ -507035,10 +507306,12 @@
|
|||
]
|
||||
],
|
||||
"serial-allowed-by-feature-policy.https.sub.html": [
|
||||
"316256bbbb4d49f10747d6244eb438228617df6f",
|
||||
"36990694d19db365eddd2ebee9cd85867318d4c8",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"serial-default-feature-policy.https.sub.html": [
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -17,3 +17,18 @@
|
|||
[.flexbox > img 4]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 8]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 5]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 7]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 6]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 1]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -17,3 +17,18 @@
|
|||
[.flexbox > img 4]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 8]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 5]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 7]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 6]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox > img 1]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,3 +2,6 @@
|
|||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[elementsFromPoint-invalid-cases.html]
|
||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[matchMedia-display-none-iframe.html]
|
||||
expected: ERROR
|
|
@ -1,2 +0,0 @@
|
|||
[HTMLMediaElement.html]
|
||||
expected: TIMEOUT
|
|
@ -312,21 +312,24 @@
|
|||
[fetch(): separate response Content-Type: text/plain ]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<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 */*]
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,3 +11,9 @@
|
|||
[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%20'NosniFF']
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_2.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[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,4 +1,5 @@
|
|||
[supported-elements.html]
|
||||
expected: TIMEOUT
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -6,11 +7,14 @@
|
|||
expected: FAIL
|
||||
|
||||
[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: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-3.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[form-double-submit-2.html]
|
||||
[preventDefault should allow onclick submit() to succeed]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[module-static-import-delayed.html]
|
||||
[document.write in an imported module]
|
||||
expected: FAIL
|
||||
|
|
@ -5,5 +5,5 @@
|
|||
expected: TIMEOUT
|
||||
|
||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[realtimeanalyser-fft-scaling.html]
|
||||
expected: TIMEOUT
|
||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -335,3 +335,9 @@
|
|||
[XRSession interface: calling cancelAnimationFrame(unsigned long) on xrSession with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[XRView interface: attribute recommendedViewportScale]
|
||||
expected: FAIL
|
||||
|
||||
[XRView interface: operation requestViewportScale(double?)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
|
||||
<!-- Row 1: no special sizing: -->
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" data-expected-width="16" data-expected-height="40">
|
||||
<img src="support/solidblue.png" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<br>
|
||||
|
||||
|
@ -64,18 +64,18 @@
|
|||
|
||||
<!-- Row 3: min main-size OR min cross-size, or both -->
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" style="min-width: 34px" data-expected-width="34" data-expected-height="40">
|
||||
<img src="support/solidblue.png" style="min-width: 34px" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" style="min-height: 34px" data-expected-width="34" data-expected-height="40">
|
||||
<img src="support/solidblue.png" style="min-height: 34px" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" style="min-width: 30px;
|
||||
min-height: 34px" data-expected-width="34" data-expected-height="40">
|
||||
min-height: 34px" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" style="min-width: 34px;
|
||||
min-height: 30px" data-expected-width="34" data-expected-height="40">
|
||||
min-height: 30px" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<br>
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
|
||||
<!-- Row 1: no special sizing: -->
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" data-expected-width="16" data-expected-height="40">
|
||||
<img src="support/solidblue.png" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<br>
|
||||
|
||||
|
@ -67,18 +67,18 @@
|
|||
|
||||
<!-- Row 3: min main-size OR min cross-size, or both -->
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" style="min-width: 34px" data-expected-width="34" data-expected-height="40">
|
||||
<img src="support/solidblue.png" style="min-width: 34px" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" style="min-height: 34px" data-expected-width="34" data-expected-height="40">
|
||||
<img src="support/solidblue.png" style="min-height: 34px" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" style="min-width: 30px;
|
||||
min-height: 34px" data-expected-width="34" data-expected-height="40">
|
||||
min-height: 34px" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" style="min-width: 34px;
|
||||
min-height: 30px" data-expected-width="34" data-expected-height="40">
|
||||
min-height: 30px" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<br>
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
|
||||
<!-- Row 1: no special sizing: -->
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" data-expected-width="40" data-expected-height="16">
|
||||
<img src="support/solidblue.png" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<br>
|
||||
|
||||
|
@ -64,18 +64,18 @@
|
|||
|
||||
<!-- Row 3: min main-size OR min cross-size, or both -->
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" style="min-width: 34px" data-expected-width="40" data-expected-height="34">
|
||||
<img src="support/solidblue.png" style="min-width: 34px" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" style="min-height: 34px" data-expected-width="40" data-expected-height="34">
|
||||
<img src="support/solidblue.png" style="min-height: 34px" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" style="min-width: 30px;
|
||||
min-height: 34px" data-expected-width="40" data-expected-height="34">
|
||||
min-height: 34px" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" style="min-width: 34px;
|
||||
min-height: 30px" data-expected-width="40" data-expected-height="34">
|
||||
min-height: 30px" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<br>
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
|
||||
<!-- Row 1: no special sizing: -->
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" data-expected-width="40" data-expected-height="16">
|
||||
<img src="support/solidblue.png" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<br>
|
||||
|
||||
|
@ -67,18 +67,18 @@
|
|||
|
||||
<!-- Row 3: min main-size OR min cross-size, or both -->
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" style="min-width: 34px" data-expected-width="40" data-expected-height="34">
|
||||
<img src="support/solidblue.png" style="min-width: 34px" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" style="min-height: 34px" data-expected-width="40" data-expected-height="34">
|
||||
<img src="support/solidblue.png" style="min-height: 34px" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" style="min-width: 30px;
|
||||
min-height: 34px" data-expected-width="40" data-expected-height="34">
|
||||
min-height: 34px" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<div class="flexbox">
|
||||
<img src="support/solidblue.png" style="min-width: 34px;
|
||||
min-height: 30px" data-expected-width="40" data-expected-height="34">
|
||||
min-height: 30px" data-expected-width="40" data-expected-height="40">
|
||||
</div>
|
||||
<br>
|
||||
|
||||
|
|
|
@ -0,0 +1,222 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Tests getters and setters of the font metrics override descriptors of FontFace</title>
|
||||
<link rel="author" href="mailto:xiaochengh@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-font-loading/#fontface-interface">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#font-metrics-override-desc">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
function rejection(promise) {
|
||||
return new Promise((resolve, reject) => promise.then(reject, resolve));
|
||||
}
|
||||
|
||||
// ascentOverride
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'ascent-override-initial',
|
||||
'url(https://example.com/font.woff)');
|
||||
assert_equals(face.ascentOverride, 'normal');
|
||||
}, "Initial value of ascentOverride should be 'normal'");
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'ascent-override-initialize-with-normal',
|
||||
'url(https://example.com/font.woff)',
|
||||
{ascentOverride: 'normal'});
|
||||
assert_equals(face.ascentOverride, 'normal');
|
||||
}, "Initialize ascentOverride with 'normal' should succeed");
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'ascent-override-initialize-with-percentage',
|
||||
'url(https://example.com/font.woff)',
|
||||
{ascentOverride: '50%'});
|
||||
assert_equals(face.ascentOverride, '50%');
|
||||
}, "Initialize ascentOverride with a percentage should succeed");
|
||||
|
||||
promise_test(async () => {
|
||||
const face = new FontFace(
|
||||
'ascent-override-initialize-with-negative-percentage',
|
||||
'url(https://example.com/font.woff)',
|
||||
{ascentOverride: '-50%'});
|
||||
const error = await rejection(face.load());
|
||||
assert_equals('error', face.status);
|
||||
assert_throws_dom('SyntaxError', () => {throw error});
|
||||
}, "Initialize ascentOverride with a negative percentage should fail");
|
||||
|
||||
promise_test(async () => {
|
||||
const face = new FontFace(
|
||||
'ascent-override-initialize-with-non-percentage',
|
||||
'url(https://example.com/font.woff)',
|
||||
{ascentOverride: '10px'});
|
||||
const error = await rejection(face.load());
|
||||
assert_equals('error', face.status);
|
||||
assert_throws_dom('SyntaxError', () => {throw error});
|
||||
}, "Initialize ascentOverride with a non-percentage should fail");
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'ascent-override-normal-to-percentage',
|
||||
'url(https://example.com/font.woff)',
|
||||
{ascentOverride: 'normal'});
|
||||
face.ascentOverride = '50%';
|
||||
assert_equals(face.ascentOverride, '50%');
|
||||
}, "Changing ascentOverride from 'normal' to percentage should succeed");
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'ascent-override-percentage-to-normal',
|
||||
'url(https://example.com/font.woff)',
|
||||
{ascentOverride: '50%'});
|
||||
face.ascentOverride = 'normal';
|
||||
assert_equals(face.ascentOverride, 'normal');
|
||||
}, "Changing ascentOverride from percentage to 'normal' should succeed");
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'ascent-override-set-to-invalid',
|
||||
'url(https://example.com/font.woff)');
|
||||
assert_throws_dom('SyntaxError', () => {face.ascentOverride = '10px'});
|
||||
}, "Changing ascentOverride to invalid value should fail");
|
||||
|
||||
// descentOverride
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'descent-override-initial',
|
||||
'url(https://example.com/font.woff)');
|
||||
assert_equals(face.descentOverride, 'normal');
|
||||
}, "Initial value of descentOverride should be 'normal'");
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'descent-override-initialize-with-normal',
|
||||
'url(https://example.com/font.woff)',
|
||||
{descentOverride: 'normal'});
|
||||
assert_equals(face.descentOverride, 'normal');
|
||||
}, "Initialize descentOverride with 'normal' should succeed");
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'descent-override-initialize-with-percentage',
|
||||
'url(https://example.com/font.woff)',
|
||||
{descentOverride: '50%'});
|
||||
assert_equals(face.descentOverride, '50%');
|
||||
}, "Initialize descentOverride with a percentage should succeed");
|
||||
|
||||
promise_test(async () => {
|
||||
const face = new FontFace(
|
||||
'descent-override-initialize-with-negative-percentage',
|
||||
'url(https://example.com/font.woff)',
|
||||
{descentOverride: '-50%'});
|
||||
const error = await rejection(face.load());
|
||||
assert_equals('error', face.status);
|
||||
assert_throws_dom('SyntaxError', () => {throw error});
|
||||
}, "Initialize descentOverride with a negative percentage should fail");
|
||||
|
||||
promise_test(async () => {
|
||||
const face = new FontFace(
|
||||
'descent-override-initialize-with-non-percentage',
|
||||
'url(https://example.com/font.woff)',
|
||||
{descentOverride: '10px'});
|
||||
const error = await rejection(face.load());
|
||||
assert_equals('error', face.status);
|
||||
assert_throws_dom('SyntaxError', () => {throw error});
|
||||
}, "Initialize descentOverride with a non-percentage should fail");
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'descent-override-normal-to-percentage',
|
||||
'url(https://example.com/font.woff)',
|
||||
{descentOverride: 'normal'});
|
||||
face.descentOverride = '50%';
|
||||
assert_equals(face.descentOverride, '50%');
|
||||
}, "Changing descentOverride from 'normal' to percentage should succeed");
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'descent-override-percentage-to-normal',
|
||||
'url(https://example.com/font.woff)',
|
||||
{descentOverride: '50%'});
|
||||
face.descentOverride = 'normal';
|
||||
assert_equals(face.descentOverride, 'normal');
|
||||
}, "Changing descentOverride from percentage to 'normal' should succeed");
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'descent-override-set-to-invalid',
|
||||
'url(https://example.com/font.woff)');
|
||||
assert_throws_dom('SyntaxError', () => {face.descentOverride = '10px'});
|
||||
}, "Changing descentOverride to invalid value should fail");
|
||||
|
||||
// lineGapOverride
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'lineGap-override-initial',
|
||||
'url(https://example.com/font.woff)');
|
||||
assert_equals(face.lineGapOverride, 'normal');
|
||||
}, "Initial value of lineGapOverride should be 'normal'");
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'lineGap-override-initialize-with-normal',
|
||||
'url(https://example.com/font.woff)',
|
||||
{lineGapOverride: 'normal'});
|
||||
assert_equals(face.lineGapOverride, 'normal');
|
||||
}, "Initialize lineGapOverride with 'normal' should succeed");
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'lineGap-override-initialize-with-percentage',
|
||||
'url(https://example.com/font.woff)',
|
||||
{lineGapOverride: '50%'});
|
||||
assert_equals(face.lineGapOverride, '50%');
|
||||
}, "Initialize lineGapOverride with a percentage should succeed");
|
||||
|
||||
promise_test(async () => {
|
||||
const face = new FontFace(
|
||||
'lineGap-override-initialize-with-negative-percentage',
|
||||
'url(https://example.com/font.woff)',
|
||||
{lineGapOverride: '-50%'});
|
||||
const error = await rejection(face.load());
|
||||
assert_equals('error', face.status);
|
||||
assert_throws_dom('SyntaxError', () => {throw error});
|
||||
}, "Initialize lineGapOverride with a negative percentage should fail");
|
||||
|
||||
promise_test(async () => {
|
||||
const face = new FontFace(
|
||||
'lineGap-override-initialize-with-non-percentage',
|
||||
'url(https://example.com/font.woff)',
|
||||
{lineGapOverride: '10px'});
|
||||
const error = await rejection(face.load());
|
||||
assert_equals('error', face.status);
|
||||
assert_throws_dom('SyntaxError', () => {throw error});
|
||||
}, "Initialize lineGapOverride with a non-percentage should fail");
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'lineGap-override-normal-to-percentage',
|
||||
'url(https://example.com/font.woff)',
|
||||
{lineGapOverride: 'normal'});
|
||||
face.lineGapOverride = '50%';
|
||||
assert_equals(face.lineGapOverride, '50%');
|
||||
}, "Changing lineGapOverride from 'normal' to percentage should succeed");
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'lineGap-override-percentage-to-normal',
|
||||
'url(https://example.com/font.woff)',
|
||||
{lineGapOverride: '50%'});
|
||||
face.lineGapOverride = 'normal';
|
||||
assert_equals(face.lineGapOverride, 'normal');
|
||||
}, "Changing lineGapOverride from percentage to 'normal' should succeed");
|
||||
|
||||
test(() => {
|
||||
const face = new FontFace(
|
||||
'lineGap-override-set-to-invalid',
|
||||
'url(https://example.com/font.woff)');
|
||||
assert_throws_dom('SyntaxError', () => {face.lineGapOverride = '10px'});
|
||||
}, "Changing lineGapOverride to invalid value should fail");
|
||||
</script>
|
|
@ -0,0 +1,27 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Tests that the ascentOverride, descentOverride and lineGapOverride attributes of FontFace work</title>
|
||||
<link rel="stylesheet" herf="/fonts/ahem.css">
|
||||
<style>
|
||||
#target {
|
||||
position: absolute;
|
||||
font-family: Ahem;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
#first-line {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0.7em;
|
||||
}
|
||||
|
||||
#second-line {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 3.7em;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="target">
|
||||
<div id="first-line">XXXXX</div>
|
||||
<div id="second-line">XXXXX</div>
|
||||
</div>
|
|
@ -0,0 +1,29 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Tests that the ascentOverride, descentOverride and lineGapOverride attributes of FontFace work</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-font-loading/#fontface-interface">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#font-metrics-override-desc">
|
||||
<link rel="match" href="fontface-override-descriptors-ref.html">
|
||||
<script>
|
||||
const face = new FontFace(
|
||||
'ahem-overridden',
|
||||
'local("Ahem"), url("/fonts/Ahem.ttf")',
|
||||
{ascentOverride: '100%', descentOverride: '100%', lineGapOverride: '100%'});
|
||||
document.fonts.add(face);
|
||||
|
||||
// Line height is ascent + descent + lineGap = 3em
|
||||
// Baseline is placed at lineGap * 0.5 + ascent = 1.5em below line box top
|
||||
// Since each Ahem 'X' glyph has 0.8em above baseline, the top of each glyph
|
||||
// should be placed at 0.7em below line box top
|
||||
</script>
|
||||
<style>
|
||||
#target {
|
||||
position: absolute;
|
||||
font-family: ahem-overridden;
|
||||
font-size: 20px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="target">
|
||||
XXXXX<br>
|
||||
XXXXX
|
||||
</div>
|
|
@ -0,0 +1,4 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<p>The word "PASS" should be seen below, with letters baseline aligned.</p>
|
||||
PASS
|
|
@ -0,0 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-multicol-1">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-align/#baseline-export">
|
||||
<link rel="match" href="baseline-000-ref.html">
|
||||
<p>The word "PASS" should be seen below, with letters baseline aligned.</p>
|
||||
<div style="display:flex; align-items:baseline;">
|
||||
PA
|
||||
<div style="columns:2; column-fill:auto; height:5em;">
|
||||
SS
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,4 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<p>There should be a green square below.</p>
|
||||
<div style="width:100px; height:100px; background:green;"></div>
|
|
@ -0,0 +1,14 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-multicol-1">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-align/#baseline-export">
|
||||
<meta name="assert" content="The multicol container here has no baseline, since we're only supposed to look for a baseline in the first column, which has no lines at all.">
|
||||
<link rel="match" href="baseline-001-ref.html">
|
||||
<p>There should be a green square below.</p>
|
||||
<div style="display:flex; align-items:baseline;">
|
||||
<div style="width:50px; height:100px; background:green;"></div>
|
||||
<div style="columns:2; height:100px; column-fill:auto;">
|
||||
<div style="width:50px; height:100px; background:green;"></div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<p>The word "PASS" should be seen below, with letters baseline aligned.</p>
|
||||
<div style="line-height:2em;">
|
||||
<br>
|
||||
PASS
|
||||
</div>
|
|
@ -0,0 +1,16 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-multicol-1">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-align/#baseline-export">
|
||||
<link rel="match" href="baseline-002-ref.html">
|
||||
<meta name="assert" content="Make sure that baseline propagation doesn't take place before column balancing is finished.">
|
||||
<p>The word "PASS" should be seen below, with letters baseline aligned.</p>
|
||||
<div style="display:flex; align-items:baseline;">
|
||||
PA
|
||||
<div style="columns:3; orphans:1; widows:1; line-height:2em;">
|
||||
<div style="break-inside:avoid; height:2em;"></div>
|
||||
SS<br>
|
||||
<br>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,4 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<p>The word "PASS" should be seen below, with letters baseline aligned.</p>
|
||||
PASS
|
|
@ -0,0 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-multicol-1">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-align/#baseline-export">
|
||||
<link rel="match" href="baseline-003-ref.html">
|
||||
<p>The word "PASS" should be seen below, with letters baseline aligned.</p>
|
||||
<div style="display:flex; align-items:baseline;">
|
||||
PA
|
||||
<div style="columns:3;">
|
||||
<div style="column-span:all;">SS</div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<p>The word "PASS" should be seen below, with letters baseline aligned.</p>
|
||||
<div style="padding-top:2em;">
|
||||
PASS
|
||||
</div>
|
|
@ -0,0 +1,14 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-multicol-1">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-align/#baseline-export">
|
||||
<link rel="match" href="baseline-004-ref.html">
|
||||
<p>The word "PASS" should be seen below, with letters baseline aligned.</p>
|
||||
<div style="display:flex; align-items:baseline;">
|
||||
PA
|
||||
<div style="columns:3;">
|
||||
<div style="column-span:all; height:2em;"></div>
|
||||
<div style="column-span:all;">SS</div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,3 @@
|
|||
<!DOCTYPE html>
|
||||
<p>The word "PASS" should be seen below, with letters baseline aligned.</p>
|
||||
PASS
|
|
@ -0,0 +1,14 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-multicol-1">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-align/#baseline-export">
|
||||
<link rel="match" href="baseline-005-ref.html">
|
||||
<p>The word "PASS" should be seen below, with letters baseline aligned.</p>
|
||||
<div style="display:flex; align-items:baseline;">
|
||||
PA
|
||||
<div style="columns:3;">
|
||||
SS
|
||||
<div style="column-span:all;"><br></div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,4 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<p>The word "PASS" should be seen below, with letters baseline aligned.</p>
|
||||
<div style="padding-top:33px;">PASS</div>
|
|
@ -0,0 +1,14 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-multicol-1">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-align/#baseline-export">
|
||||
<link rel="match" href="baseline-006-ref.html">
|
||||
<p>The word "PASS" should be seen below, with letters baseline aligned.</p>
|
||||
<div style="display:flex; align-items:baseline;">
|
||||
PA
|
||||
<div style="columns:3;">
|
||||
<div style="height:99px;"></div>
|
||||
<div style="column-span:all;">SS</div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,4 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<p>There should be a green square below.</p>
|
||||
<div style="width:100px; height:100px; background:green"></div>
|
|
@ -0,0 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-multicol-1">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-align/#baseline-export">
|
||||
<meta name="assert" content="The first column has no baseline. The column after the spanner does have one, but we're not supposed to look beyond the first column (and any spanners).">
|
||||
<link rel="match" href="baseline-007-ref.html">
|
||||
<p>There should be a green square below.</p>
|
||||
<div style="display:flex; align-items:baseline;">
|
||||
<div style="width:50px; height:100px; background:green;"></div>
|
||||
<div style="columns:3; width:50px; line-height:40px; background:green;">
|
||||
<div style="height:90px;"></div>
|
||||
<div style="column-span:all; height:30px;"></div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,4 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<p>There should be a green square below.</p>
|
||||
<div style="width:100px; height:100px; background:green;"></div>
|
|
@ -0,0 +1,22 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-multicol-1">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-align/#baseline-export">
|
||||
<meta name="assert" content="According to the spec, a multicol container has no last baseline, only a first baseline. So, when aligning with an inline-block, the block-end outer edge of the multicol is what's used for alignment.">
|
||||
<link rel="match" href="baseline-008-ref.html">
|
||||
<style>
|
||||
.part {
|
||||
display: inline-block;
|
||||
width: 50px;
|
||||
height: 100px;
|
||||
background: green;
|
||||
}
|
||||
.multicol {
|
||||
columns: 2;
|
||||
column-fill: auto;
|
||||
}
|
||||
</style>
|
||||
<p>There should be a green square below.</p>
|
||||
<div class="part"></div><div class="part multicol">
|
||||
<br>
|
||||
</div>
|
|
@ -30,6 +30,7 @@
|
|||
text-decoration: green underline;
|
||||
text-decoration-skip-ink: none;
|
||||
text-decoration-thickness: 8em;
|
||||
text-underline-position: from-font;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
text-decoration: red underline;
|
||||
text-decoration-skip-ink: none;
|
||||
text-underline-offset: 5em;
|
||||
text-underline-position:from-font;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
<!doctype html>
|
||||
<title>feImage referencing a child of the filter's target element</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#FilterProperty">
|
||||
<svg>
|
||||
<filter id='f1' x='0' y='0' width='1' height='1'>
|
||||
<feFlood flood-color='green'/>
|
||||
</filter>
|
||||
<filter id='f2' x='0' y='0' width='1' height='1'>
|
||||
<feImage href='#inner'/>
|
||||
</filter>
|
||||
<g filter='url(#f2)'>
|
||||
<g id='inner' filter='url(#f1)'>
|
||||
<rect width='50' height='50' fill='orange'/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
|
@ -96,14 +96,17 @@ test(function () {
|
|||
var log = [];
|
||||
var instance = document.createElement('my-custom-element-2');
|
||||
document.body.appendChild(instance);
|
||||
assert_false(instance.matches(":defined"), "Prior to definition, instance should not match :defined");
|
||||
customElements.define('my-custom-element-2',class extends HTMLElement {
|
||||
constructor() {
|
||||
assert_false(instance.matches(":defined"), "During construction, prior to super(), instance should not match :defined");
|
||||
super();
|
||||
log.push([this, 'begin']);
|
||||
assert_false(this.matches(":defined"), "During construction, this should not match :defined");
|
||||
assert_false(this.matches(":defined"), "During construction, after super(), this should not match :defined");
|
||||
log.push([this, 'end']);
|
||||
}
|
||||
});
|
||||
assert_true(instance.matches(":defined"), "After construction, instance should match :defined");
|
||||
assert_equals(log.length, 2);
|
||||
assert_array_equals(log[0], [instance, 'begin']);
|
||||
assert_array_equals(log[1], [instance, 'end']);
|
||||
|
|
|
@ -65,6 +65,10 @@ setKeyboard: Set the current default key source
|
|||
addKeyboard: Add a new key input source with the given name
|
||||
```
|
||||
|
||||
This works with elements in other frames/windows as long as they are
|
||||
same-origin with the test, and the test does not depend on the
|
||||
window.name property remaining unset on the target window.
|
||||
|
||||
### bless
|
||||
|
||||
Usage: `test_driver.bless(intent, action)`
|
||||
|
@ -104,6 +108,10 @@ possible to click it. It returns a promise that resolves after the
|
|||
click has occurred or rejects if the element cannot be clicked (for
|
||||
example, it is obscured by an element on top of it).
|
||||
|
||||
This works with elements in other frames/windows as long as they are
|
||||
same-origin with the test, and the test does not depend on the
|
||||
window.name property remaining unset on the target window.
|
||||
|
||||
Note that if the element to be clicked does not have a unique ID, the
|
||||
document must not have any DOM mutations made between the function
|
||||
being called and the promise settling.
|
||||
|
@ -120,6 +128,10 @@ make it possible to send keys. It returns a promise that resolves
|
|||
after the keys have been sent, or rejects if the keys cannot be sent
|
||||
to the element.
|
||||
|
||||
This works with elements in other frames/windows as long as they are
|
||||
same-origin with the test, and the test does not depend on the
|
||||
window.name property remaining unset on the target window.
|
||||
|
||||
Note that if the element that the keys need to be sent to does not have
|
||||
a unique ID, the document must not have any DOM mutations made
|
||||
between the function being called and the promise settling.
|
||||
|
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
const directory = "/html/cross-origin-opener-policy/reporting";
|
||||
const executor_path = directory + "/resources/executor.html?pipe=";
|
||||
const redirect_path = directory + "/resources/redirect.py?";
|
||||
const same_origin = get_host_info().HTTPS_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
|
||||
promise_test(async t => {
|
||||
let runTest = (openee_redirect, name) => promise_test(async t => {
|
||||
// The test window.
|
||||
const this_window_token = token();
|
||||
|
||||
|
@ -29,9 +30,12 @@ promise_test(async t => {
|
|||
`&uuid=${opener_token}`;
|
||||
|
||||
// The "openee" window. This is same origin with the "opener".
|
||||
const openee_report_token= token();
|
||||
const openee_report_token = token();
|
||||
const openee_token = token();
|
||||
const openee_url = same_origin + executor_path + `&uuid=${openee_token}`;
|
||||
const openee_redirect_url = same_origin + redirect_path + openee_url
|
||||
const openee_requested_url = openee_redirect ? openee_redirect_url
|
||||
: openee_url;
|
||||
|
||||
// 1. Create the opener window.
|
||||
let opener_window_proxy = window.open(opener_url);
|
||||
|
@ -39,7 +43,7 @@ promise_test(async t => {
|
|||
|
||||
// 2. The opener opens it openee.
|
||||
send(opener_token, `
|
||||
openee = window.open("${openee_url}");
|
||||
openee = window.open("${openee_requested_url}");
|
||||
send("${this_window_token}", "ACK 1");
|
||||
`);
|
||||
assert_equals("ACK 1", await receive(this_window_token));
|
||||
|
@ -66,7 +70,9 @@ promise_test(async t => {
|
|||
assert_equals(report.body.effectivePolicy, "same-origin-plus-coep");
|
||||
assert_equals(report.body.property, "blur");
|
||||
assert_source_location_found(report);
|
||||
// TODO(arthursonzogni): Check the window-blocked-url.
|
||||
}, "Opener (COOP-RO+COEP) accesses openee. Report to opener");
|
||||
}, name);
|
||||
|
||||
runTest(false, "access-from-coop-page-to-openee, same-origin");
|
||||
runTest(true , "access-from-coop-page-to-openee, same-origin + redirect");
|
||||
|
||||
</script>
|
||||
|
|
|
@ -13,11 +13,12 @@
|
|||
|
||||
const directory = "/html/cross-origin-opener-policy/reporting";
|
||||
const executor_path = directory + "/resources/executor.html?pipe=";
|
||||
const redirect_path = directory + "/resources/redirect.py?";
|
||||
const same_origin = get_host_info().HTTPS_ORIGIN;
|
||||
const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
|
||||
promise_test(async t => {
|
||||
let runTest = (openee_redirect, name) => promise_test(async t => {
|
||||
// The test window.
|
||||
const this_window_token = token();
|
||||
|
||||
|
@ -33,6 +34,9 @@ promise_test(async t => {
|
|||
const openee_report_token= token();
|
||||
const openee_token = token();
|
||||
const openee_url = cross_origin + executor_path + `&uuid=${openee_token}`;
|
||||
const openee_redirect_url = same_origin + redirect_path + openee_url
|
||||
const openee_requested_url = openee_redirect ? openee_redirect_url
|
||||
: openee_url;
|
||||
|
||||
// 1. Create the opener window.
|
||||
let opener_window_proxy = window.open(opener_url);
|
||||
|
@ -40,7 +44,7 @@ promise_test(async t => {
|
|||
|
||||
// 2. The opener opens it openee.
|
||||
send(opener_token, `
|
||||
openee = window.open("${openee_url}");
|
||||
openee = window.open("${openee_requested_url}");
|
||||
send("${this_window_token}", "ACK 1");
|
||||
`);
|
||||
assert_equals("ACK 1", await receive(this_window_token));
|
||||
|
@ -67,7 +71,9 @@ promise_test(async t => {
|
|||
assert_equals(report.body.effectivePolicy, "same-origin-plus-coep");
|
||||
assert_equals(report.body.property, "blur");
|
||||
assert_source_location_found(report);
|
||||
// TODO(arthursonzogni): Check the window-blocked-url.
|
||||
}, "Opener (COOP-RO+COEP) accesses openee. Report to opener");
|
||||
}, name);
|
||||
|
||||
runTest(false, "access-from-coop-page-to-openee, cross-origin");
|
||||
runTest(true , "access-from-coop-page-to-openee, cross-origin + redirect");
|
||||
|
||||
</script>
|
||||
|
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
const directory = "/html/cross-origin-opener-policy/reporting";
|
||||
const executor_path = directory + "/resources/executor.html?pipe=";
|
||||
const redirect_path = directory + "/resources/redirect.py?";
|
||||
const same_origin = get_host_info().HTTPS_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
|
||||
promise_test(async t => {
|
||||
let runTest = (openee_redirect, name) => promise_test(async t => {
|
||||
const report_token = token();
|
||||
const openee_token = token();
|
||||
|
||||
|
@ -24,7 +25,11 @@ promise_test(async t => {
|
|||
const openee_url = same_origin + executor_path +
|
||||
reportTo.header + reportTo.coopReportOnlySameOriginHeader + coep_header +
|
||||
`&uuid=${openee_token}`;
|
||||
const openee = window.open(openee_url);
|
||||
const openee_redirect_url = same_origin + redirect_path + openee_url
|
||||
const openee_requested_url = openee_redirect ? openee_redirect_url
|
||||
: openee_url;
|
||||
|
||||
const openee = window.open(openee_requested_url);
|
||||
t.add_cleanup(() => send(openee_token, "window.close()"))
|
||||
|
||||
// 1. Try to access the opener. A report is sent, because of COOP-RO+COEP.
|
||||
|
@ -42,6 +47,9 @@ promise_test(async t => {
|
|||
assert_equals(report.body.effectivePolicy, "same-origin-plus-coep");
|
||||
assert_equals(report.body.property, "blur");
|
||||
assert_source_location_found(report);
|
||||
}, "Openee (COOP-RO+COEP) accesses opener. Report to openee");
|
||||
}, name);
|
||||
|
||||
runTest(false, "access-from-coop-page-to-opener, same-origin");
|
||||
runTest(true , "access-from-coop-page-to-opener, same-origin + redirect");
|
||||
|
||||
</script>
|
||||
|
|
|
@ -13,10 +13,12 @@
|
|||
|
||||
const directory = "/html/cross-origin-opener-policy/reporting";
|
||||
const executor_path = directory + "/resources/executor.html?pipe=";
|
||||
const redirect_path = directory + "/resources/redirect.py?";
|
||||
const same_origin = get_host_info().HTTPS_ORIGIN;
|
||||
const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
|
||||
promise_test(async t => {
|
||||
let runTest = (openee_redirect, name) => promise_test(async t => {
|
||||
const report_token = token();
|
||||
const openee_token = token();
|
||||
|
||||
|
@ -24,7 +26,11 @@ promise_test(async t => {
|
|||
const openee_url = cross_origin + executor_path +
|
||||
reportTo.header + reportTo.coopReportOnlySameOriginHeader + coep_header +
|
||||
`&uuid=${openee_token}`;
|
||||
const openee = window.open(openee_url);
|
||||
const openee_redirect_url = same_origin + redirect_path + openee_url
|
||||
const openee_requested_url = openee_redirect ? openee_redirect_url
|
||||
: openee_url;
|
||||
|
||||
const openee = window.open(openee_requested_url);
|
||||
t.add_cleanup(() => send(openee_token, "window.close()"))
|
||||
|
||||
// 1. Try to access the opener. A report is sent, because of COOP-RO+COEP.
|
||||
|
@ -42,6 +48,9 @@ promise_test(async t => {
|
|||
assert_equals(report.body.effectivePolicy, "same-origin-plus-coep");
|
||||
assert_equals(report.body.property, "blur");
|
||||
assert_source_location_found(report);
|
||||
}, "Openee (COOP-RO+COEP) accesses opener. Report to openee");
|
||||
}, name);
|
||||
|
||||
runTest(false, "access-from-coop-page-to-opener, cross-origin");
|
||||
runTest(true , "access-from-coop-page-to-opener, cross-origin + redirect");
|
||||
|
||||
</script>
|
||||
|
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
const directory = "/html/cross-origin-opener-policy/reporting";
|
||||
const executor_path = directory + "/resources/executor.html?pipe=";
|
||||
const redirect_path = directory + "/resources/redirect.py?";
|
||||
const same_origin = get_host_info().HTTPS_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
|
||||
promise_test(async t => {
|
||||
let runTest = (openee_redirect, name) => promise_test(async t => {
|
||||
// The test window.
|
||||
const this_window_token = token();
|
||||
|
||||
|
@ -32,6 +33,9 @@ promise_test(async t => {
|
|||
const openee_report_token= token();
|
||||
const openee_token = token();
|
||||
const openee_url = same_origin + executor_path + `&uuid=${openee_token}`;
|
||||
const openee_redirect_url = same_origin + redirect_path + openee_url
|
||||
const openee_requested_url = openee_redirect ? openee_redirect_url
|
||||
: openee_url;
|
||||
|
||||
// 1. Create the opener window.
|
||||
let opener_window_proxy = window.open(opener_url);
|
||||
|
@ -39,7 +43,7 @@ promise_test(async t => {
|
|||
|
||||
// 2. The opener opens its openee.
|
||||
send(opener_token, `
|
||||
openee = window.open("${openee_url}");
|
||||
openee = window.open("${openee_requested_url}");
|
||||
send("${this_window_token}", "ACK 1");
|
||||
`);
|
||||
assert_equals("ACK 1", await receive(this_window_token));
|
||||
|
@ -60,7 +64,9 @@ promise_test(async t => {
|
|||
assert_equals(report.body.effectivePolicy, "same-origin-plus-coep");
|
||||
assert_equals(report.body.property, "blur");
|
||||
assert_source_location_missing(report);
|
||||
// TODO(arthursonzogni): Check the window-blocked-url.
|
||||
}, "Openee accesses opener (COOP-RO-COEP). Report to opener");
|
||||
}, name);
|
||||
|
||||
runTest(false, "access-to-coop-page-from-openee, same-origin");
|
||||
runTest(true , "access-to-coop-page-from-openee, same-origin + redirect");
|
||||
|
||||
</script>
|
||||
|
|
|
@ -13,11 +13,12 @@
|
|||
|
||||
const directory = "/html/cross-origin-opener-policy/reporting";
|
||||
const executor_path = directory + "/resources/executor.html?pipe=";
|
||||
const redirect_path = directory + "/resources/redirect.py?";
|
||||
const same_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const cross_origin= get_host_info().HTTPS_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
|
||||
promise_test(async t => {
|
||||
let runTest = (openee_redirect, name) => promise_test(async t => {
|
||||
// The test window.
|
||||
const this_window_token = token();
|
||||
|
||||
|
@ -33,6 +34,9 @@ promise_test(async t => {
|
|||
const openee_report_token= token();
|
||||
const openee_token = token();
|
||||
const openee_url = cross_origin + executor_path + `&uuid=${openee_token}`;
|
||||
const openee_redirect_url = same_origin + redirect_path + openee_url
|
||||
const openee_requested_url = openee_redirect ? openee_redirect_url
|
||||
: openee_url;
|
||||
|
||||
// 1. Create the opener window.
|
||||
let opener_window_proxy = window.open(opener_url);
|
||||
|
@ -40,7 +44,7 @@ promise_test(async t => {
|
|||
|
||||
// 2. The opener opens its openee.
|
||||
send(opener_token, `
|
||||
openee = window.open("${openee_url}");
|
||||
openee = window.open("${openee_requested_url}");
|
||||
send("${this_window_token}", "ACK 1");
|
||||
`);
|
||||
assert_equals("ACK 1", await receive(this_window_token));
|
||||
|
@ -61,7 +65,9 @@ promise_test(async t => {
|
|||
assert_equals(report.body.effectivePolicy, "same-origin-plus-coep");
|
||||
assert_equals(report.body.property, "blur");
|
||||
assert_source_location_missing(report);
|
||||
// TODO(arthursonzogni): Check the window-blocked-url.
|
||||
}, "Openee accesses opener (COOP-RO-COEP). Report to opener");
|
||||
}, name);
|
||||
|
||||
runTest(false, "access-to-coop-page-from-openee, cross-origin");
|
||||
runTest(true , "access-to-coop-page-from-openee, cross-origin + redirect)");
|
||||
|
||||
</script>
|
||||
|
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
const directory = "/html/cross-origin-opener-policy/reporting";
|
||||
const executor_path = directory + "/resources/executor.html?pipe=";
|
||||
const redirect_path = directory + "/resources/redirect.py?";
|
||||
const same_origin = get_host_info().HTTPS_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
|
||||
promise_test(async t => {
|
||||
let runTest = (openee_redirect, name) => promise_test(async t => {
|
||||
const report_token = token();
|
||||
const openee_token = token();
|
||||
const opener_token = token(); // The current test window.
|
||||
|
@ -25,7 +26,12 @@ promise_test(async t => {
|
|||
const openee_url = same_origin + executor_path + reportTo.header +
|
||||
reportTo.coopReportOnlySameOriginHeader + coep_header +
|
||||
`&uuid=${openee_token}`;
|
||||
const openee = window.open(openee_url);
|
||||
const openee_redirect_url = same_origin + redirect_path + openee_url
|
||||
const openee_requested_url = openee_redirect ? openee_redirect_url
|
||||
: openee_url;
|
||||
|
||||
|
||||
const openee = window.open(openee_requested_url);
|
||||
t.add_cleanup(() => send(openee_token, "window.close()"))
|
||||
|
||||
// 1. Make sure the new document to be loaded.
|
||||
|
@ -48,7 +54,9 @@ promise_test(async t => {
|
|||
assert_equals(report.body.effectivePolicy, "same-origin-plus-coep");
|
||||
assert_equals(report.body.property, "blur");
|
||||
assert_source_location_missing(report);
|
||||
// TODO(arthursonzogni): Add check for report > body > blocked-window-url
|
||||
}, "Opener accesses openee (COOP-RO+COEP). Report to openee");
|
||||
}, name);
|
||||
|
||||
runTest(false, "access-to-coop-page-from-opener, same-origin");
|
||||
runTest(true , "access-to-coop-page-from-opener, same-origin + redirect");
|
||||
|
||||
</script>
|
||||
|
|
|
@ -13,10 +13,12 @@
|
|||
|
||||
const directory = "/html/cross-origin-opener-policy/reporting";
|
||||
const executor_path = directory + "/resources/executor.html?pipe=";
|
||||
const redirect_path = directory + "/resources/redirect.py?";
|
||||
const same_origin = get_host_info().HTTPS_ORIGIN;
|
||||
const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
|
||||
promise_test(async t => {
|
||||
let runTest = (openee_redirect, name) => promise_test(async t => {
|
||||
const report_token = token();
|
||||
const openee_token = token();
|
||||
const opener_token = token(); // The current test window.
|
||||
|
@ -25,7 +27,12 @@ promise_test(async t => {
|
|||
const openee_url = cross_origin + executor_path +
|
||||
reportTo.header + reportTo.coopReportOnlySameOriginHeader + coep_header +
|
||||
`&uuid=${openee_token}`;
|
||||
const openee = window.open(openee_url);
|
||||
const openee_redirect_url = same_origin + redirect_path + openee_url
|
||||
const openee_requested_url = openee_redirect ? openee_redirect_url
|
||||
: openee_url;
|
||||
|
||||
|
||||
const openee = window.open(openee_requested_url);
|
||||
t.add_cleanup(() => send(openee_token, "window.close()"))
|
||||
|
||||
// 1. Make sure the new document to be loaded.
|
||||
|
@ -48,7 +55,9 @@ promise_test(async t => {
|
|||
assert_equals(report.body.effectivePolicy, "same-origin-plus-coep");
|
||||
assert_equals(report.body.property, "blur");
|
||||
assert_source_location_missing(report);
|
||||
// TODO(arthursonzogni): Add check for report > body > blocked-window-url
|
||||
}, "Opener accesses openee (COOP-RO+COEP). Report to openee");
|
||||
}, name);
|
||||
|
||||
runTest(false, "access-to-coop-page-from-opener, cross-origin");
|
||||
runTest(true , "access-to-coop-page-from-opener, cross-origin + redirect");
|
||||
|
||||
</script>
|
||||
|
|
|
@ -18,7 +18,7 @@ const send = function(uuid, message) {
|
|||
}
|
||||
|
||||
const receive = async function(uuid) {
|
||||
const timeout = 3000;
|
||||
const timeout = 2500;
|
||||
const retry_delay = 100;
|
||||
for(let i = 0; i * retry_delay < timeout; ++i) {
|
||||
let response = await fetch(dispatcher_url + `?uuid=${uuid}`);
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
def main(request, response):
|
||||
response.status = 302
|
||||
response.headers.set(b"Location", request.url[request.url.find('?')+1:])
|
|
@ -0,0 +1,7 @@
|
|||
<!doctype html>
|
||||
<button id="button">Button</button>
|
||||
<div id="log">FAIL</div>
|
||||
<script>
|
||||
document.getElementById("button").addEventListener("click", () =>
|
||||
document.getElementById("log").textContent = "PASS");
|
||||
</script>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>TestDriver click on a document in an iframe</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
|
||||
<iframe src="click_child.html"></iframe>
|
||||
|
||||
<script>
|
||||
setup({single_test: true});
|
||||
addEventListener("load", () => {
|
||||
let child = frames[0];
|
||||
let button = child.document.getElementById("button");
|
||||
test_driver
|
||||
.click(button)
|
||||
.then(() => {
|
||||
assert_equals(child.document.getElementById("log").textContent, "PASS");
|
||||
done();
|
||||
})
|
||||
.catch(() => assert_unreached("click failed"));
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,31 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>TestDriver click method with multiple windows and nested iframe</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
|
||||
<iframe src="about:blank"></iframe>
|
||||
|
||||
<script>
|
||||
setup({single_test: true});
|
||||
|
||||
window.open("about:blank")
|
||||
var child = window.open("click_outer_child.html")
|
||||
window.open("about:blank")
|
||||
|
||||
addEventListener("load",() => {
|
||||
child.addEventListener("load", () => {
|
||||
let doc = child.frames[2].document;
|
||||
let button = doc.getElementById("button");
|
||||
test_driver
|
||||
.click(button)
|
||||
.then(() => {
|
||||
assert_equals(doc.getElementById("log").textContent, "PASS");
|
||||
done();
|
||||
})
|
||||
.catch(() => assert_unreached("click failed"));
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,4 @@
|
|||
<!doctype html>
|
||||
<iframe src="about:blank"></iframe>
|
||||
<iframe src="about:blank"></iframe>
|
||||
<iframe src="click_child.html"></iframe>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>TestDriver click method in window</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>
|
||||
setup({single_test: true});
|
||||
addEventListener("load", () => {
|
||||
let child = window.open("click_child.html");
|
||||
child.addEventListener("load", () => {
|
||||
let button = child.document.getElementById("button");
|
||||
test_driver
|
||||
.click(button)
|
||||
.then(() => {
|
||||
assert_equals(child.document.getElementById("log").textContent, "PASS");
|
||||
done();
|
||||
})
|
||||
.catch(() => assert_unreached("click failed"));
|
||||
});
|
||||
})
|
||||
</script>
|
|
@ -163,6 +163,21 @@ function checkBeforeinputAndInputEventsOnNOOP() {
|
|||
"input event shouldn't be fired when the key operation does not cause modifying the DOM tree");
|
||||
}
|
||||
|
||||
promise_test(async () => {
|
||||
reset();
|
||||
editor.innerHTML = "<p>abc</p>";
|
||||
selection.collapse(editor.firstChild.firstChild, 0);
|
||||
await sendBackspaceKey();
|
||||
assert_equals(editor.innerHTML, "<p>abc</p>");
|
||||
checkGetTargetRangesOfBeforeinputOnDeleteSomething({
|
||||
startContainer: editor.firstChild.firstChild,
|
||||
startOffset: 0,
|
||||
endContainer: editor.firstChild.firstChild,
|
||||
endOffset: 0,
|
||||
});
|
||||
checkGetTargetRangesOfInputOnDoNothing();
|
||||
}, 'Backspace at "<p>[]abc</p>"');
|
||||
|
||||
// Simply deletes the previous ASCII character of caret position.
|
||||
promise_test(async () => {
|
||||
reset();
|
||||
|
|
|
@ -211,6 +211,54 @@ promise_test(async () => {
|
|||
checkGetTargetRangesOfInputOnDeleteSomething();
|
||||
}, 'Delete at "<p>[]abc</p>"');
|
||||
|
||||
promise_test(async () => {
|
||||
reset();
|
||||
editor.innerHTML = "<p>abc</p>";
|
||||
let abc = editor.querySelector("p").firstChild;
|
||||
selection.collapse(abc, 3);
|
||||
await sendDeleteKey();
|
||||
assert_equals(editor.innerHTML, "<p>abc</p>");
|
||||
checkGetTargetRangesOfBeforeinputOnDeleteSomething({
|
||||
startContainer: abc,
|
||||
startOffset: 3,
|
||||
endContainer: abc,
|
||||
endOffset: 3,
|
||||
});
|
||||
checkGetTargetRangesOfInputOnDoNothing();
|
||||
}, 'Delete at "<p>abc[]</p>"');
|
||||
|
||||
promise_test(async () => {
|
||||
reset();
|
||||
editor.innerHTML = "<p>abc<br></p>";
|
||||
let abc = editor.querySelector("p").firstChild;
|
||||
selection.collapse(abc, 3);
|
||||
await sendDeleteKey();
|
||||
assert_equals(editor.innerHTML, "<p>abc<br></p>");
|
||||
checkGetTargetRangesOfBeforeinputOnDeleteSomething({
|
||||
startContainer: abc,
|
||||
startOffset: 3,
|
||||
endContainer: abc,
|
||||
endOffset: 3,
|
||||
});
|
||||
checkGetTargetRangesOfInputOnDoNothing();
|
||||
}, 'Delete at "<p>abc[]<br></p>"');
|
||||
|
||||
promise_test(async () => {
|
||||
reset();
|
||||
editor.innerHTML = `<p><img src="${kImgSrc}"><br></p>`;
|
||||
let p = editor.querySelector("p");
|
||||
selection.collapse(p, 1);
|
||||
await sendDeleteKey();
|
||||
assert_equals(editor.innerHTML, `<p><img src="${kImgSrc}"><br></p>`);
|
||||
checkGetTargetRangesOfBeforeinputOnDeleteSomething({
|
||||
startContainer: p,
|
||||
startOffset: 1,
|
||||
endContainer: p,
|
||||
endOffset: 1,
|
||||
});
|
||||
checkGetTargetRangesOfInputOnDoNothing();
|
||||
}, 'Delete at "<p><img>[]<br></p>"');
|
||||
|
||||
// Should delete the `<span>` element because it becomes empty.
|
||||
// However, we need discussion whether the `<span>` element should be
|
||||
// contained by a range of `getTargetRanges()`.
|
||||
|
@ -566,6 +614,25 @@ promise_test(async () => {
|
|||
checkGetTargetRangesOfInputOnDeleteSomething();
|
||||
}, 'Delete at "<p>abc[]<br></p><p>def</p>"');
|
||||
|
||||
promise_test(async () => {
|
||||
reset();
|
||||
editor.innerHTML = `<p><img src="${kImgSrc}"><br></p><p>def</p>`;
|
||||
let p1 = editor.firstChild;
|
||||
let img = p1.firstChild;
|
||||
let p2 = p1.nextSibling;
|
||||
let def = p2.firstChild;
|
||||
selection.collapse(p1, 1);
|
||||
await sendDeleteKey();
|
||||
assert_equals(editor.innerHTML, `<p><img src="${kImgSrc}">def</p>`);
|
||||
checkGetTargetRangesOfBeforeinputOnDeleteSomething({
|
||||
startContainer: p1,
|
||||
startOffset: 1,
|
||||
endContainer: def,
|
||||
endOffset: 0,
|
||||
});
|
||||
checkGetTargetRangesOfInputOnDeleteSomething();
|
||||
}, `Delete at "<p><img>{}<br></p><p>def</p>"`);
|
||||
|
||||
promise_test(async () => {
|
||||
reset();
|
||||
editor.innerHTML = "<p>abc</p><p>def</p>";
|
||||
|
@ -941,6 +1008,23 @@ promise_test(async () => {
|
|||
checkGetTargetRangesOfInputOnDeleteSomething();
|
||||
}, 'Delete at "<div>abc[]<br><hr>def</div>"');
|
||||
|
||||
promise_test(async () => {
|
||||
reset();
|
||||
editor.innerHTML = `<div><img src="${kImgSrc}"><br><hr>def</div>`;
|
||||
let div = editor.querySelector("div");
|
||||
let img = div.firstChild;
|
||||
selection.collapse(div, 1);
|
||||
await sendDeleteKey();
|
||||
assert_equals(editor.innerHTML, `<div><img src="${kImgSrc}">def</div>`);
|
||||
checkGetTargetRangesOfBeforeinputOnDeleteSomething({
|
||||
startContainer: div,
|
||||
startOffset: 1,
|
||||
endContainer: div,
|
||||
endOffset: 3,
|
||||
});
|
||||
checkGetTargetRangesOfInputOnDeleteSomething();
|
||||
}, 'Delete at "<div><img>{}<br><hr>def</div>"');
|
||||
|
||||
promise_test(async () => {
|
||||
reset();
|
||||
editor.innerHTML = `<div>abc<hr>def</div>`;
|
||||
|
@ -1069,6 +1153,46 @@ promise_test(async () => {
|
|||
checkGetTargetRangesOfInputOnDeleteSomething();
|
||||
}, 'Delete at "<div>abc[<p>]def<br>ghi</p></div>"');
|
||||
|
||||
promise_test(async () => {
|
||||
reset();
|
||||
editor.innerHTML = "<div>abc<br><p>def<br>ghi</p></div>";
|
||||
let div = editor.firstChild;
|
||||
let p = editor.querySelector("p");
|
||||
let def = p.firstChild;
|
||||
let abc = div.firstChild;
|
||||
selection.collapse(abc, 3);
|
||||
await sendDeleteKey();
|
||||
assert_in_array(editor.innerHTML, ["<div>abcdef<p>ghi</p></div>",
|
||||
"<div>abcdef<br><p>ghi</p></div>"]);
|
||||
checkGetTargetRangesOfBeforeinputOnDeleteSomething({
|
||||
startContainer: div,
|
||||
startOffset: 1,
|
||||
endContainer: def,
|
||||
endOffset: 0,
|
||||
});
|
||||
checkGetTargetRangesOfInputOnDeleteSomething();
|
||||
}, 'Delete at "<div>abc[]<br><p>def<br>ghi</p></div>"');
|
||||
|
||||
promise_test(async () => {
|
||||
reset();
|
||||
editor.innerHTML = `<div><img src="${kImgSrc}"><br><p>def<br>ghi</p></div>`;
|
||||
let div = editor.firstChild;
|
||||
let p = editor.querySelector("p");
|
||||
let def = p.firstChild;
|
||||
let abc = div.firstChild;
|
||||
selection.collapse(div, 1);
|
||||
await sendDeleteKey();
|
||||
assert_in_array(editor.innerHTML, [`<div><img src="${kImgSrc}">def<p>ghi</p></div>`,
|
||||
`<div><img src="${kImgSrc}">def<br><p>ghi</p></div>`]);
|
||||
checkGetTargetRangesOfBeforeinputOnDeleteSomething({
|
||||
startContainer: div,
|
||||
startOffset: 1,
|
||||
endContainer: def,
|
||||
endOffset: 0,
|
||||
});
|
||||
checkGetTargetRangesOfInputOnDeleteSomething();
|
||||
}, 'Delete at "<div><img>{}<br><p>def<br>ghi</p></div>"');
|
||||
|
||||
// Joining parent block and child block should remove invisible preceding
|
||||
// white-spaces of the child block and invisible leading white-spaces in
|
||||
// the child block, and they should be contained in a range of
|
||||
|
@ -1182,6 +1306,44 @@ promise_test(async () => {
|
|||
checkGetTargetRangesOfInputOnDeleteSomething();
|
||||
}, 'Delete at "<div><p>abc[]</p>def</div>"');
|
||||
|
||||
promise_test(async () => {
|
||||
reset();
|
||||
editor.innerHTML = "<div><p>abc<br></p>def</div>";
|
||||
let p = editor.querySelector("p");
|
||||
let abc = p.firstChild;
|
||||
let def = p.nextSibling;
|
||||
selection.collapse(abc, 3);
|
||||
await sendDeleteKey();
|
||||
assert_in_array(editor.innerHTML, ["<div><p>abcdef</p></div>",
|
||||
"<div><p>abcdef<br></p></div>"]);
|
||||
checkGetTargetRangesOfBeforeinputOnDeleteSomething({
|
||||
startContainer: p,
|
||||
startOffset: 1,
|
||||
endContainer: def,
|
||||
endOffset: 0,
|
||||
});
|
||||
checkGetTargetRangesOfInputOnDeleteSomething();
|
||||
}, 'Delete at "<div><p>abc[]<br></p>def</div>"');
|
||||
|
||||
promise_test(async () => {
|
||||
reset();
|
||||
editor.innerHTML = `<div><p><img src="${kImgSrc}"><br></p>def</div>`;
|
||||
let p = editor.querySelector("p");
|
||||
let abc = p.firstChild;
|
||||
let def = p.nextSibling;
|
||||
selection.collapse(p, 1);
|
||||
await sendDeleteKey();
|
||||
assert_in_array(editor.innerHTML, [`<div><p><img src="${kImgSrc}">def</p></div>`,
|
||||
`<div><p><img src="${kImgSrc}">def<br></p></div>`]);
|
||||
checkGetTargetRangesOfBeforeinputOnDeleteSomething({
|
||||
startContainer: p,
|
||||
startOffset: 1,
|
||||
endContainer: def,
|
||||
endOffset: 0,
|
||||
});
|
||||
checkGetTargetRangesOfInputOnDeleteSomething();
|
||||
}, 'Delete at "<div><p><img>{}<br></p>def</div>"');
|
||||
|
||||
promise_test(async () => {
|
||||
reset();
|
||||
editor.innerHTML = "<div><p>abc</p>def</div>";
|
||||
|
|
|
@ -118,6 +118,9 @@ enum XREye {
|
|||
readonly attribute XREye eye;
|
||||
readonly attribute Float32Array projectionMatrix;
|
||||
[SameObject] readonly attribute XRRigidTransform transform;
|
||||
readonly attribute double? recommendedViewportScale;
|
||||
|
||||
undefined requestViewportScale(double? scale);
|
||||
};
|
||||
|
||||
[SecureContext, Exposed=Window] interface XRViewport {
|
||||
|
|
|
@ -180,8 +180,6 @@ SET TIMEOUT: media-source/mediasource-util.js
|
|||
SET TIMEOUT: media-source/URL-createObjectURL-revoke.html
|
||||
SET TIMEOUT: mixed-content/generic/sanity-checker.js
|
||||
SET TIMEOUT: navigation-timing/*
|
||||
SET TIMEOUT: html/canvas/offscreen/the-offscreen-canvas/*
|
||||
SET TIMEOUT: html/canvas/offscreen/manual/the-offscreen-canvas/*
|
||||
SET TIMEOUT: old-tests/submission/Microsoft/history/history_000.htm
|
||||
SET TIMEOUT: paint-timing/resources/subframe-painting.html
|
||||
SET TIMEOUT: payment-request/allowpayment/setting-allowpaymentrequest-timing.https.sub.html
|
||||
|
@ -618,6 +616,8 @@ CSS-COLLIDING-SUPPORT-NAME: css/css-shapes/shape-outside/shape-image/support/ani
|
|||
CSS-COLLIDING-SUPPORT-NAME: css/css-display/support/util.js
|
||||
CSS-COLLIDING-SUPPORT-NAME: css/CSS2/normal-flow/support/replaced-min-max-1.png
|
||||
CSS-COLLIDING-SUPPORT-NAME: css/vendor-imports/mozilla/mozilla-central-reftests/ui3/support/replaced-min-max-1.png
|
||||
CSS-COLLIDING-REF-NAME: css/css-multicol/baseline-001-ref.html
|
||||
CSS-COLLIDING-REF-NAME: css/css-grid/subgrid/baseline-001-ref.html
|
||||
|
||||
CSS-COLLIDING-TEST-NAME: css/css-contain/inheritance.html
|
||||
CSS-COLLIDING-TEST-NAME: css/css-contain/content-visibility/inheritance.html
|
||||
|
@ -691,14 +691,9 @@ MISSING-LINK: css/filter-effects/*.any.js
|
|||
|
||||
# Tests that use WebKit/Blink testing APIs
|
||||
LAYOUTTESTS APIS: import-maps/common/resources/common-test-helper.js
|
||||
LAYOUTTESTS APIS: resources/test-only-api.js
|
||||
LAYOUTTESTS APIS: resources/chromium/enable-hyperlink-auditing.js
|
||||
LAYOUTTESTS APIS: resources/chromium/generic_sensor_mocks.js
|
||||
LAYOUTTESTS APIS: resources/chromium/nfc-mock.js
|
||||
LAYOUTTESTS APIS: resources/chromium/webxr-test.js
|
||||
LAYOUTTESTS APIS: web-nfc/NDEFReader-document-hidden-manual.https.html
|
||||
LAYOUTTESTS APIS: web-nfc/NDEFReader_scan.https.html
|
||||
LAYOUTTESTS APIS: web-nfc/NDEFWriter_write.https.html
|
||||
LAYOUTTESTS APIS: webxr/resources/webxr_util.js
|
||||
|
||||
# Signed Exchange files have hard-coded URLs in the certUrl field
|
||||
|
@ -733,6 +728,7 @@ AHEM SYSTEM FONT: acid/acid3/test.html
|
|||
AHEM SYSTEM FONT: resource-timing/resources/all_resource_types.htm
|
||||
AHEM SYSTEM FONT: resource-timing/resources/iframe-reload-TAO.sub.html
|
||||
AHEM SYSTEM FONT: html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.ahem.html
|
||||
AHEM SYSTEM FONT: css/css-font-loading/fontface-override-descriptors.html
|
||||
|
||||
# TODO: The following should be deleted along with the Ahem web font cleanup
|
||||
# PR (https://github.com/web-platform-tests/wpt/pull/18702)
|
||||
|
@ -744,7 +740,6 @@ TESTHARNESS-IN-OTHER-TYPE: html/canvas/element/manual/wide-gamut-canvas/imagedat
|
|||
TESTHARNESS-IN-OTHER-TYPE: css/CSS2/floats-clear/adjoining-float-new-fc-crash.html
|
||||
TESTHARNESS-IN-OTHER-TYPE: css/CSS2/floats/floats-saturated-position-crash.html
|
||||
TESTHARNESS-IN-OTHER-TYPE: css/CSS2/linebox/video-needs-layout-crash.html
|
||||
TESTHARNESS-IN-OTHER-TYPE: css/css-animations/keyframes-remove-documentElement-crash.html
|
||||
TESTHARNESS-IN-OTHER-TYPE: css/css-break/break-before-with-no-fragmentation-crash.html
|
||||
TESTHARNESS-IN-OTHER-TYPE: css/css-multicol/abspos-in-multicol-with-spanner-crash.html
|
||||
TESTHARNESS-IN-OTHER-TYPE: css/css-multicol/extremely-tall-multicol-with-extremely-tall-child-crash.html
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
// META: script=/common/get-host-info.sub.js
|
||||
// META: script=./resources/common.js
|
||||
// META: timeout=long
|
||||
'use strict';
|
||||
|
||||
|
||||
promise_test(async testCase => {
|
||||
try {
|
||||
const BYTES_PER_WORKER = 10 * 1024 * 1024;
|
||||
await createWorker(BYTES_PER_WORKER);
|
||||
const result = await performance.measureMemory();
|
||||
assert_greater_than_equal(result.bytes, BYTES_PER_WORKER);
|
||||
checkMeasureMemory(result, {
|
||||
allowed: [window.location.href],
|
||||
required: [window.location.href],
|
||||
});
|
||||
} catch (error) {
|
||||
if (!(error instanceof DOMException)) {
|
||||
throw error;
|
||||
}
|
||||
assert_equals(error.name, 'SecurityError');
|
||||
}
|
||||
}, 'Well-formed result of performance.measureMemory.');
|
||||
|
|
@ -180,3 +180,15 @@ function sameOriginContexts(children) {
|
|||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
async function createWorker(bytes) {
|
||||
const worker = new Worker('resources/worker.js');
|
||||
let resolve_promise;
|
||||
const promise = new Promise(resolve => resolve_promise = resolve);
|
||||
worker.onmessage = function (message) {
|
||||
assert_equals(message.data, 'ready');
|
||||
resolve_promise();
|
||||
}
|
||||
worker.postMessage({bytes});
|
||||
return promise;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue