mirror of
https://github.com/servo/servo.git
synced 2025-06-25 09:34:32 +01:00
Update web-platform-tests to revision 388763aee0d14246a2f8ebb24176424cc1983820
This commit is contained in:
parent
0838d782c6
commit
b24cb329fb
202 changed files with 11044 additions and 1361 deletions
|
@ -4,7 +4,7 @@
|
|||
expected: TIMEOUT
|
||||
|
||||
[Opening a blob URL in a new window immediately before revoking it works.]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Fetching a blob URL immediately before revoking it works in an iframe.]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-004.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -2,3 +2,6 @@
|
|||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -8,6 +8,3 @@
|
|||
[throws if handleEvent is thruthy and not callable]
|
||||
expected: FAIL
|
||||
|
||||
[doesn't look up handleEvent method on callable event listeners]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
||||
|
|
@ -17,3 +17,6 @@
|
|||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
[test some point of the element: top left corner]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,85 +1,7 @@
|
|||
[offsetTopLeft-border-box.html]
|
||||
[container: 11]
|
||||
expected: FAIL
|
||||
|
||||
[container: 10]
|
||||
expected: FAIL
|
||||
|
||||
[container: 13]
|
||||
expected: FAIL
|
||||
|
||||
[container: 12]
|
||||
expected: FAIL
|
||||
|
||||
[container: 15]
|
||||
expected: FAIL
|
||||
|
||||
[container: 14]
|
||||
expected: FAIL
|
||||
|
||||
[container: 17]
|
||||
expected: FAIL
|
||||
|
||||
[container: 16]
|
||||
expected: FAIL
|
||||
|
||||
[container: 19]
|
||||
expected: FAIL
|
||||
|
||||
[container: 18]
|
||||
expected: FAIL
|
||||
|
||||
[container: 9]
|
||||
expected: FAIL
|
||||
|
||||
[container: 8]
|
||||
expected: FAIL
|
||||
|
||||
[container: 1]
|
||||
expected: FAIL
|
||||
|
||||
[container: 0]
|
||||
expected: FAIL
|
||||
|
||||
[container: 3]
|
||||
expected: FAIL
|
||||
|
||||
[container: 2]
|
||||
expected: FAIL
|
||||
|
||||
[container: 5]
|
||||
expected: FAIL
|
||||
|
||||
[container: 4]
|
||||
expected: FAIL
|
||||
|
||||
[container: 7]
|
||||
expected: FAIL
|
||||
|
||||
[container: 6]
|
||||
expected: FAIL
|
||||
|
||||
[container: 20]
|
||||
expected: FAIL
|
||||
|
||||
[container: 21]
|
||||
expected: FAIL
|
||||
|
||||
[container: 22]
|
||||
expected: FAIL
|
||||
|
||||
[container: 23]
|
||||
expected: FAIL
|
||||
|
||||
[container: 24]
|
||||
expected: FAIL
|
||||
|
||||
[container: 25]
|
||||
expected: FAIL
|
||||
|
||||
[container: 26]
|
||||
expected: FAIL
|
||||
|
||||
[container: 27]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -312,24 +312,21 @@
|
|||
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -53,3 +53,6 @@
|
|||
[combined text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript x/x]
|
||||
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%22nosniFF%22]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_3.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[cross-origin-objects-on-new-window.html]
|
||||
expected: TIMEOUT
|
|
@ -1,8 +1,7 @@
|
|||
[embedded-opener-remove-frame.html]
|
||||
expected: CRASH
|
||||
[opener of discarded nested browsing context]
|
||||
expected: FAIL
|
||||
|
||||
[opener of discarded auxiliary browsing context]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -299,3 +299,6 @@
|
|||
[No tab on table-cell itself ("<table><tr><td id=target>abc</td><td>def</td>")]
|
||||
expected: FAIL
|
||||
|
||||
[<svg> text contents preserved ("<div><svg><text>abc</text></svg></div>")]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_escaping-1.html]
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-2.html]
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[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
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[form-double-submit-2.html]
|
||||
[preventDefault should allow onclick submit() to succeed]
|
||||
expected: FAIL
|
||||
|
|
@ -3,6 +3,3 @@
|
|||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: TIMEOUT
|
||||
|
||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
[promise-job-entry.html]
|
||||
expected: TIMEOUT
|
||||
[Fulfillment handler on fulfilled promise]
|
||||
expected: FAIL
|
||||
|
||||
[Rejection handler on pending-then-rejected promise]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Sanity check: this all works as expected with no promises involved]
|
||||
expected: FAIL
|
||||
|
@ -16,5 +15,5 @@
|
|||
expected: FAIL
|
||||
|
||||
[Fulfillment handler on pending-then-fulfilled promise]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
[entry-different-function-realm.html]
|
||||
expected: ERROR
|
||||
[Start function]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
[entry.html]
|
||||
[Start function]
|
||||
expected: FAIL
|
||||
|
||||
[Sanity check: this all works as expected synchronously]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[incumbent.html]
|
||||
expected: TIMEOUT
|
||||
[Start function]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[003.html]
|
||||
expected: ERROR
|
||||
[shared]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
expected: FAIL
|
||||
|
||||
[Opening a blob URL in a new window immediately before revoking it works.]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -10973,6 +10973,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"text-decoration-thickness-nesting-manual.html": [
|
||||
"b436761bc5465f1b18b916c964da3be2ac0eb470",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"text-underline-position-019-manual.html": [
|
||||
"0308fbc8c9ed4b54865a5b382741c148c6853981",
|
||||
[
|
||||
|
@ -17259,6 +17266,27 @@
|
|||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"showDirectoryPicker-manual.https.html": [
|
||||
"b19287877f759d87c565548fe32b0c9895ae1bd2",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"showOpenFilePicker-manual.https.html": [
|
||||
"b55157ad20fc75b12e7850d422af9492c5f28cbc",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"showSaveFilePicker-manual.https.html": [
|
||||
"f8280d29ff59cf8558f7adfec83df77ef7dfa14f",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"notifications": {
|
||||
|
@ -118412,12 +118440,12 @@
|
|||
]
|
||||
],
|
||||
"background-image-007.html": [
|
||||
"388b221e833460e9a2dbf77900aec954f014b76e",
|
||||
"9bccd2d364a64f20f879d6825fcc60c49f32cd11",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-backgrounds/reference/background-image-001-ref.html",
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
|
@ -165862,6 +165890,58 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"intrinsic-size-005.tentative.html": [
|
||||
"697e773be1d3bccb748bea0828b390fb1ae18631",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"intrinsic-size-006.tentative.html": [
|
||||
"fa736e92267cd4d6c947a0e275f00c9952074c8e",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"intrinsic-size-007.tentative.html": [
|
||||
"6310bf4269a4f0d49b35028b8cf086629776115b",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"intrinsic-size-008.tentative.html": [
|
||||
"7ef0d6262bbcf0705a6bfff6b84139e79169db90",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"percentage-resolution-001.tentative.html": [
|
||||
"d606bfc65e340f95fbbc355b764a7de5e7aeb6a1",
|
||||
[
|
||||
|
@ -315178,7 +315258,7 @@
|
|||
]
|
||||
},
|
||||
"requirements.txt": [
|
||||
"b54096f2d662de86e99c04ad6122cc1aa271b2c7",
|
||||
"a008e3e72e88c9605b4b01cdc26d68fd4d13d710",
|
||||
[]
|
||||
],
|
||||
"selectors": {
|
||||
|
@ -327173,7 +327253,7 @@
|
|||
],
|
||||
"resources": {
|
||||
"dispatcher.js": [
|
||||
"53109400f807b7aa82e0dc948ca701ece7638719",
|
||||
"8cd28a0717993839edc0b483b096f64f4ce63e02",
|
||||
[]
|
||||
],
|
||||
"dispatcher.py": [
|
||||
|
@ -327707,7 +327787,7 @@
|
|||
[]
|
||||
],
|
||||
"getter-tests.js": [
|
||||
"34f3b0fa9c619fafb24cc14af6fef13e92891357",
|
||||
"fd32e8d69a37e0c01adb642bcdf403b633428ed2",
|
||||
[]
|
||||
],
|
||||
"setter-tests.js": [
|
||||
|
@ -334601,6 +334681,38 @@
|
|||
"e6f5746eb743a338ad6fbd401715fed368e4cf74",
|
||||
[]
|
||||
],
|
||||
"nested-imports-a.js": [
|
||||
"a127aeb559a0a4d6eedccae19905088fa9fce4b9",
|
||||
[]
|
||||
],
|
||||
"nested-imports-b.js": [
|
||||
"18a5af40cc0ec3a3c10de50f3cd3bffe22c6ec4d",
|
||||
[]
|
||||
],
|
||||
"nested-imports-c.js": [
|
||||
"ec44596aeae7482656b29f1d6aebf6d2ab6a9d54",
|
||||
[]
|
||||
],
|
||||
"nested-imports-d.js": [
|
||||
"cee87849c6258182d6c0085ab504867c197fb8d4",
|
||||
[]
|
||||
],
|
||||
"nested-imports-e.js": [
|
||||
"ec6f0360a608429f774e430a2658f3235d72ed43",
|
||||
[]
|
||||
],
|
||||
"nested-imports-f.js": [
|
||||
"0591e0b3166907bdf94cff3677c2460f9824e082",
|
||||
[]
|
||||
],
|
||||
"nested-imports-g.js": [
|
||||
"86cbe7d3f8e0c29fd7848d9b2626166a0f6f3d30",
|
||||
[]
|
||||
],
|
||||
"nested-imports-h.js": [
|
||||
"a1612912599a4c79307cffe79b43133ceb7f99b0",
|
||||
[]
|
||||
],
|
||||
"nested-missing-export.js": [
|
||||
"3801ae847afca704cfac9d99428c96851296b8cb",
|
||||
[]
|
||||
|
@ -338143,7 +338255,7 @@
|
|||
[]
|
||||
],
|
||||
"layout-comparison.js": [
|
||||
"f9111d02ee31871f68e2793c684258b826fd4e3d",
|
||||
"452b45006e4d032709d10b3232b8d73e4dc50e33",
|
||||
[]
|
||||
],
|
||||
"mathml-fragments.js": [
|
||||
|
@ -339080,6 +339192,12 @@
|
|||
[]
|
||||
],
|
||||
"resources": {
|
||||
"data": {
|
||||
"testfile.txt": [
|
||||
"980a0d5f19a64b4b30a87d4206aade58726b60e3",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"message-target-dedicated-worker.js": [
|
||||
"26ff23ef8ac65009c3c5efd4bdeda3970ae93910",
|
||||
[]
|
||||
|
@ -339113,11 +339231,11 @@
|
|||
[]
|
||||
],
|
||||
"native-fs-test-helpers.js": [
|
||||
"d8137c399408cdea10c4b7d473cae36f1c85265b",
|
||||
"cf9f39a9a87e96398c468f8bd3c51169f2f18d6b",
|
||||
[]
|
||||
],
|
||||
"opaque-origin-sandbox.html": [
|
||||
"70b5ac545b30a36f9418ac571cb77f25b31a6542",
|
||||
"e2d57a339992a176dfcdee9c81366af95168c07d",
|
||||
[]
|
||||
],
|
||||
"sandboxed-fs-test-helpers.js": [
|
||||
|
@ -342385,7 +342503,7 @@
|
|||
[]
|
||||
],
|
||||
"mock-screenenumeration.js": [
|
||||
"b655d1863cb9f85a619229a10a3221112bb1d9fe",
|
||||
"5a2d7b18d28229d9e0e3e53a22006a082de25dea",
|
||||
[]
|
||||
],
|
||||
"mock-screenenumeration.js.header": [
|
||||
|
@ -342494,7 +342612,7 @@
|
|||
]
|
||||
},
|
||||
"idlharness.js": [
|
||||
"f336df5f6871fbc5a0120107a410ae677ab92ad5",
|
||||
"58d1517308ab44b242b05d11b1e1f98cac6c24b8",
|
||||
[]
|
||||
],
|
||||
"idlharness.js.headers": [
|
||||
|
@ -343022,7 +343140,7 @@
|
|||
},
|
||||
"screen_enumeration": {
|
||||
"README.md": [
|
||||
"b2d39f534ac2b2c23cb2d884184521aadb817864",
|
||||
"e3de83d0a8983b2131327556ff5acb011bcbf7e5",
|
||||
[]
|
||||
],
|
||||
"resources": {
|
||||
|
@ -347251,7 +347369,7 @@
|
|||
],
|
||||
"tasks": {
|
||||
"test.yml": [
|
||||
"3fae9eacaf121f383ef143d7be98efae2f0b6011",
|
||||
"7943e671282c4f137c4df74c1b2c2ed2fd2acd67",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -347283,7 +347401,7 @@
|
|||
[]
|
||||
],
|
||||
"test_valid.py": [
|
||||
"acfe875d74d22695363cb0328aabcf18b6704d4e",
|
||||
"a116ca89310d808bd7ef8c512436a5c483b988a8",
|
||||
[]
|
||||
]
|
||||
}
|
||||
|
@ -349532,11 +349650,11 @@
|
|||
[]
|
||||
],
|
||||
"AUTHORS.rst": [
|
||||
"fc635dea75b617f6466dddbca16cfca8c27de6fe",
|
||||
"904013908d2cad63f7b4f2041873aa8078d37ce1",
|
||||
[]
|
||||
],
|
||||
"CHANGES.rst": [
|
||||
"82605a216b27316db2b4354a4ba8db6b992f62b6",
|
||||
"fcb22475cd5f87d3ec0651de2a450553bc77eea7",
|
||||
[]
|
||||
],
|
||||
"CONTRIBUTING.rst": [
|
||||
|
@ -349552,11 +349670,165 @@
|
|||
[]
|
||||
],
|
||||
"README.rst": [
|
||||
"8c151328b3da0287644c02bef8377862a3f0484c",
|
||||
"d367905da0ae9901e8e163c263e495d1ed90b159",
|
||||
[]
|
||||
],
|
||||
"benchmarks": {
|
||||
"bench_html.py": [
|
||||
"cfe53c6733a87ef69804853b1fb9a45c639b6c6d",
|
||||
[]
|
||||
],
|
||||
"bench_wpt.py": [
|
||||
"d5da006984c0f7a87ea1ca640f1f062c0e4ea289",
|
||||
[]
|
||||
],
|
||||
"data": {
|
||||
"README.md": [
|
||||
"5b896cbb7c17b9c58e8e378b705c44824d09d4af",
|
||||
[]
|
||||
],
|
||||
"html.html": [
|
||||
"d2bb1be74524143a7811ac1ca10f1261d55c2171",
|
||||
[]
|
||||
],
|
||||
"wpt": {
|
||||
"LICENSE.md": [
|
||||
"ad4858c8745cfa1b330a52d27c621a09aa3112e0",
|
||||
[]
|
||||
],
|
||||
"README.md": [
|
||||
"61b656941b5927bd6d3bd9b08d2cc91dddfc162f",
|
||||
[]
|
||||
],
|
||||
"random": {
|
||||
"001.html": [
|
||||
"7b0f21ec0464de444670575ce440d06dbc88caf4",
|
||||
[]
|
||||
],
|
||||
"background-origin-007-ref.html": [
|
||||
"d3a1d0532818428e3dfb69101d7e8b881b420608",
|
||||
[]
|
||||
],
|
||||
"background_shorthand_css_relative_url.html": [
|
||||
"2397fec00528aa38e55119416ae550de58eb92cd",
|
||||
[]
|
||||
],
|
||||
"beforeunload-on-history-back-1.html": [
|
||||
"4403cfa8e913e8ddd7365bd7a8b3cb76cecfe14f",
|
||||
[]
|
||||
],
|
||||
"euckr-encode-form.html": [
|
||||
"545f8ac93f6c055625de5dd6ec13fd3f843be772",
|
||||
[]
|
||||
],
|
||||
"frame-ancestors-self-allow.html": [
|
||||
"a8a295dfc40cb49f76b8b9aa3f2dd137910029ec",
|
||||
[]
|
||||
],
|
||||
"grouping-dl.html": [
|
||||
"2394d6a929894adedaa1872729fb51285e2650a3",
|
||||
[]
|
||||
],
|
||||
"heavy-styling-005.html": [
|
||||
"2bbdb3cf73b35b4e538a700c33aed35b78fc170c",
|
||||
[]
|
||||
],
|
||||
"htb-ltr-ltr.html": [
|
||||
"5a19c0e9ccd5fa67e1df49e85da74a3a09d2fa15",
|
||||
[]
|
||||
],
|
||||
"idbindex_get8.htm": [
|
||||
"9bfc48422fe0fd821362c15bec118fa0c9558643",
|
||||
[]
|
||||
],
|
||||
"idlharness.html": [
|
||||
"ecc601bcf6a97a1722e3901d731f9f424d0a79e1",
|
||||
[]
|
||||
],
|
||||
"li-type-unsupported-ref.html": [
|
||||
"4fbc5aca974bffeade2e97e8fa4d0f183a847464",
|
||||
[]
|
||||
],
|
||||
"moz-css21-float-page-break-inside-avoid-6.html": [
|
||||
"3cd0a5fb1c4b57a3d8f362ff48846285b38962d8",
|
||||
[]
|
||||
],
|
||||
"shape-outside-content-box-002.html": [
|
||||
"e2040763dfbffe411d09ab5c5fbfdbcb37bb789c",
|
||||
[]
|
||||
],
|
||||
"worker-constructor.https.html": [
|
||||
"6e127b11a5b593360cc6e3b5155d93deb580a75a",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"weighted": {
|
||||
"2d.composite.image.destination-over.html": [
|
||||
"d742f84dfb8622669dd860c234ba192688c96027",
|
||||
[]
|
||||
],
|
||||
"align-content-wrap-002.html": [
|
||||
"a15f7ea844d112ab696a03d994cb17ed1fe47074",
|
||||
[]
|
||||
],
|
||||
"big5_chars_extra.html": [
|
||||
"5ea8e5740da374ae22277c6de2364264e8fa332e",
|
||||
[]
|
||||
],
|
||||
"fetch.http.html": [
|
||||
"d0cb7206f8a6e4b2c8a5e8968db3a8eee67bc99f",
|
||||
[]
|
||||
],
|
||||
"filter-turbulence-invalid-001.html": [
|
||||
"7400c8b37938f143fa701e9126c0a769d4d4de1c",
|
||||
[]
|
||||
],
|
||||
"grid-auto-fill-rows-001.html": [
|
||||
"afce3f5fa91a609f5a4f27f666e97565f4fbc8ee",
|
||||
[]
|
||||
],
|
||||
"image-orientation-from-image-content-images-ref.html": [
|
||||
"c0d29909f9068803dfcfe9bd6818f354d4fb6ca8",
|
||||
[]
|
||||
],
|
||||
"masonry-item-placement-006.html": [
|
||||
"0082d72df26258ec61c988c7d9e46463a10f5a8f",
|
||||
[]
|
||||
],
|
||||
"moz-css21-table-page-break-inside-avoid-2.html": [
|
||||
"cc6a55933f67a4941a362d7a85e5f2d8b48f27d9",
|
||||
[]
|
||||
],
|
||||
"position-sticky-table-th-bottom-ref.html": [
|
||||
"2aa5c08a55d29a089d57e4303d893dfd15920abf",
|
||||
[]
|
||||
],
|
||||
"pre-float-001.html": [
|
||||
"8dd08d80992e6d6310a6697f84c2533d399c8e5e",
|
||||
[]
|
||||
],
|
||||
"resize-004.html": [
|
||||
"3a1f561749343bc8857dc8c433a50d1bf9c94f02",
|
||||
[]
|
||||
],
|
||||
"test-plan.src.html": [
|
||||
"c29f268837dd828a24f04a89aa149092b85e11cc",
|
||||
[]
|
||||
],
|
||||
"toBlob.png.html": [
|
||||
"1533bfdb6c76d6e829dba1911bb717b768b552b9",
|
||||
[]
|
||||
],
|
||||
"will-change-abspos-cb-001.html": [
|
||||
"d59e443310fa84f94533c7b18ce67d6c82cf1fc7",
|
||||
[]
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"debug-info.py": [
|
||||
"f93fbdbeaec13e39c40450d6461e25cca24c4471",
|
||||
"b47b8ebfa2ade15b2642e1c4934359b7f9fa9281",
|
||||
[]
|
||||
],
|
||||
"doc": {
|
||||
|
@ -349569,7 +349841,7 @@
|
|||
[]
|
||||
],
|
||||
"conf.py": [
|
||||
"e02218b8ad39970bbcb3ea28584f3c7138d51c8a",
|
||||
"22ebab4faa0977cd000296614d995b9863bdd8d6",
|
||||
[]
|
||||
],
|
||||
"html5lib.filters.rst": [
|
||||
|
@ -349619,32 +349891,28 @@
|
|||
],
|
||||
"html5lib": {
|
||||
"__init__.py": [
|
||||
"ba01065ef63abab6c99f002b2187102da2e03080",
|
||||
"7b854f9900f36c334c1ff0222b5d97b53ac51fc3",
|
||||
[]
|
||||
],
|
||||
"_ihatexml.py": [
|
||||
"4c77717bbc02c96907e1ce8c5bd36cc7bbed09cb",
|
||||
"3ff803c195243984738c6f3f328c78d9c4999cfc",
|
||||
[]
|
||||
],
|
||||
"_inputstream.py": [
|
||||
"177f0ab9ee3498d2c81808ff64bffc12e21a2bff",
|
||||
"0207dd211b1f2858d60695c1ad8e7212cd72e0f5",
|
||||
[]
|
||||
],
|
||||
"_tokenizer.py": [
|
||||
"6078f66aa0d3195c45668fc65efbf19217b3185e",
|
||||
"4748a19795e8e1bf0c6282e7ac81a17fb047f9ef",
|
||||
[]
|
||||
],
|
||||
"_trie": {
|
||||
"__init__.py": [
|
||||
"a5ba4bf123aa585ec8a47dce6838b09b4dfa0b1a",
|
||||
"07bad5d31c1ec7aa7ac081dac5586db91f3c5a99",
|
||||
[]
|
||||
],
|
||||
"_base.py": [
|
||||
"a1158bbbfa5b7421b17ba5d3d48d9736b87fd059",
|
||||
[]
|
||||
],
|
||||
"datrie.py": [
|
||||
"51f3d046a740834d2c183cd7e98cc12201e8f9be",
|
||||
"6b71975f08587ca8861acc2380f17701b7c7c656",
|
||||
[]
|
||||
],
|
||||
"py.py": [
|
||||
|
@ -349653,11 +349921,11 @@
|
|||
]
|
||||
},
|
||||
"_utils.py": [
|
||||
"91252f2c0a8fb51df84a50ed6157ede7d71253a2",
|
||||
"9ea5794214eccfe1d34b72f7b3e865256a8a5d1c",
|
||||
[]
|
||||
],
|
||||
"constants.py": [
|
||||
"1ff804190cd890e68be62fccb1a907ff9122f78a",
|
||||
"fe3e237cd8a118da1c707412fe8251d2e19477c5",
|
||||
[]
|
||||
],
|
||||
"filters": {
|
||||
|
@ -349686,7 +349954,7 @@
|
|||
[]
|
||||
],
|
||||
"sanitizer.py": [
|
||||
"e852f53be8af5ca9c142a8ed436bdab45d17bc75",
|
||||
"70ef90665e5df6fb32cb449042aa9a090970640b",
|
||||
[]
|
||||
],
|
||||
"whitespace.py": [
|
||||
|
@ -349695,11 +349963,11 @@
|
|||
]
|
||||
},
|
||||
"html5parser.py": [
|
||||
"9d39b9d41da7686748f347e5a8a5e79540dd7332",
|
||||
"74d829d9847ee4f8f7e5361c14104e82787e62f9",
|
||||
[]
|
||||
],
|
||||
"serializer.py": [
|
||||
"d6b7105d48096c42e9c4a4a5fa16f5474da5f060",
|
||||
"c66df68392619972665bd5e2045e40a177c1e0ad",
|
||||
[]
|
||||
],
|
||||
"tests": {
|
||||
|
@ -349718,12 +349986,12 @@
|
|||
]
|
||||
},
|
||||
"sanitizer.py": [
|
||||
"93882ec477c76f03a40558e3386a50683b32bae9",
|
||||
"bb4834214f36e2f18297f08b758214e493f7d164",
|
||||
[]
|
||||
],
|
||||
"serializer-testdata": {
|
||||
"core.test": [
|
||||
"70828d0d25e6f3a0cd84b99230be7f7395375875",
|
||||
"55294b6831bc230c69891daf3f5f01e44cf5a253",
|
||||
[]
|
||||
],
|
||||
"injectmeta.test": [
|
||||
|
@ -349744,7 +350012,7 @@
|
|||
]
|
||||
},
|
||||
"support.py": [
|
||||
"dab65c1c9d19b57a8366d41e25bccf2912a594ac",
|
||||
"9cd5afbe69c5ada5e5b9752272dbce4174051887",
|
||||
[]
|
||||
],
|
||||
"test_alphabeticalattributes.py": [
|
||||
|
@ -349752,11 +350020,11 @@
|
|||
[]
|
||||
],
|
||||
"test_encoding.py": [
|
||||
"9a411c77d2888794097f00f072e4d49a1ef57733",
|
||||
"47c4814a4741185b5766ce24eb154ed6e3f2b31a",
|
||||
[]
|
||||
],
|
||||
"test_meta.py": [
|
||||
"e42eafdba4a046d5fb82caa23426858dece2a288",
|
||||
"dd02dd7fb777fadb8d1661f0fb31ac4c7a8873bd",
|
||||
[]
|
||||
],
|
||||
"test_optionaltags_filter.py": [
|
||||
|
@ -349764,19 +350032,23 @@
|
|||
[]
|
||||
],
|
||||
"test_parser2.py": [
|
||||
"bcc0bf48f0829cfc170a8c31a1c301fd66c55bb1",
|
||||
"879d2447df30ac72149f722018737d911ddef2ad",
|
||||
[]
|
||||
],
|
||||
"test_sanitizer.py": [
|
||||
"45046d572297216de31235edaee5d0f9ac6e4f38",
|
||||
"f3faeb8050494f32e5ec90b94b0b37e85a3ffd3f",
|
||||
[]
|
||||
],
|
||||
"test_serializer.py": [
|
||||
"9333286ef142884c39528d51c86d37b688de435a",
|
||||
"bce62459056cc6197f441d889edce5d28fb48529",
|
||||
[]
|
||||
],
|
||||
"test_stream.py": [
|
||||
"27c39538c8b1473d4141443d90972e5eaa6d449b",
|
||||
"efe9b472f5fda115dd3863c7e046267c9ca84177",
|
||||
[]
|
||||
],
|
||||
"test_tokenizer2.py": [
|
||||
"158d847a26d9a9ebb08d769da4d0110882a642bd",
|
||||
[]
|
||||
],
|
||||
"test_treeadapters.py": [
|
||||
|
@ -349784,7 +350056,7 @@
|
|||
[]
|
||||
],
|
||||
"test_treewalkers.py": [
|
||||
"67fc89e55f3b4ab6e1f291c46f1a99f7bc442998",
|
||||
"780ca964ba4b74d37fd86ad053f862c7af53650b",
|
||||
[]
|
||||
],
|
||||
"test_whitespace_filter.py": [
|
||||
|
@ -349792,15 +350064,15 @@
|
|||
[]
|
||||
],
|
||||
"tokenizer.py": [
|
||||
"1440a722cb8a2e3c3668a2f6b33038700245731c",
|
||||
"47264cc3258b5d3ff5eb5d13c4128f18e5226afd",
|
||||
[]
|
||||
],
|
||||
"tokenizertotree.py": [
|
||||
"b841c76ce41a06f6aaab3d39bee46376458335b8",
|
||||
"8528e8766a5c65424afc20b403bc30a60e73f707",
|
||||
[]
|
||||
],
|
||||
"tree_construction.py": [
|
||||
"c6e7ca09050dc63cdec333c6ed01fddeba062425",
|
||||
"1ef6e7250c4d3078c4134ddcc99d743ca321b30e",
|
||||
[]
|
||||
],
|
||||
"us-ascii.html": [
|
||||
|
@ -349832,25 +350104,25 @@
|
|||
[]
|
||||
],
|
||||
"base.py": [
|
||||
"05d97eccc898dd6445de75a192e4664d7e0bb300",
|
||||
"e4a3d710d9a88e0910bcde6d27351d3dc5e444af",
|
||||
[]
|
||||
],
|
||||
"dom.py": [
|
||||
"dcfac220bfaf9906b1f57ee747baff2a627cfa58",
|
||||
"d8b5300465bd475d9d2d1fd87e52ff867de3a445",
|
||||
[]
|
||||
],
|
||||
"etree.py": [
|
||||
"cb1d4aef503692d57516bb8f5426a872fe89287d",
|
||||
"086bed4eed15777fad15c5fe7f194ea47b3afa3c",
|
||||
[]
|
||||
],
|
||||
"etree_lxml.py": [
|
||||
"ca12a99cccf98a1be4bc463bce29c402ff634e62",
|
||||
"e73de61a8539b9001b7a58bdb93603aad85226f0",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"treewalkers": {
|
||||
"__init__.py": [
|
||||
"9bec2076f3f60e644cdd3265d8e113ca17149dfd",
|
||||
"b2d3aac3137f5d374ec35dd4bbfdb5e732fc51f0",
|
||||
[]
|
||||
],
|
||||
"base.py": [
|
||||
|
@ -349862,11 +350134,11 @@
|
|||
[]
|
||||
],
|
||||
"etree.py": [
|
||||
"d15a7eebfe8cdb4539d25eacad2ad17a73788054",
|
||||
"44653372d6b496821aa4cd8d7423ff468ee8860b",
|
||||
[]
|
||||
],
|
||||
"etree_lxml.py": [
|
||||
"fb2363112b1ea39d4789ef9f1589385f69854ab5",
|
||||
"a614ac5b3f771ec4f3023f0bafcada8229a77736",
|
||||
[]
|
||||
],
|
||||
"genshi.py": [
|
||||
|
@ -349876,7 +350148,7 @@
|
|||
}
|
||||
},
|
||||
"parse.py": [
|
||||
"3e65c330d921ac867c56560105bc06f8d49d188a",
|
||||
"e6806b4607d7dcbbaa84319c69758aeec35e2486",
|
||||
[]
|
||||
],
|
||||
"pytest.ini": [
|
||||
|
@ -349888,11 +350160,11 @@
|
|||
[]
|
||||
],
|
||||
"requirements-optional.txt": [
|
||||
"c00fd242f6f4605351f1a38a391d7564efac116c",
|
||||
"2e78c952c1c422d92d8a6bb1d7d1e12c916d775e",
|
||||
[]
|
||||
],
|
||||
"requirements-test.txt": [
|
||||
"4e223a3fde1e787c57e621fb00b828924969b235",
|
||||
"703d0e690f44a54e17cda4374fcc0f7b610e5f9e",
|
||||
[]
|
||||
],
|
||||
"requirements.txt": [
|
||||
|
@ -349900,20 +350172,20 @@
|
|||
[]
|
||||
],
|
||||
"setup.cfg": [
|
||||
"d309fdaa3f42e009316adad1140d1a0dffca2ee6",
|
||||
"0b2bb9c79b7529954c14d1e5a0f98e8ae66b05e3",
|
||||
[]
|
||||
],
|
||||
"setup.py": [
|
||||
"3e413f2a933aed7deebb39f7c5d33a6755cd76ab",
|
||||
"f84c12849672d527a80dfb5d5dc057460c418b21",
|
||||
[]
|
||||
],
|
||||
"tox.ini": [
|
||||
"e07ef670cef9848a7b1dc4b76b571bf3995ab216",
|
||||
"58758cea13c370a23f18dc7158d6c3f447b6295b",
|
||||
[]
|
||||
],
|
||||
"utils": {
|
||||
"entities.py": [
|
||||
"6dccf5f0bfd0025566426c314096e67e568359be",
|
||||
"6e8ca4580604825370bb4fdd5831449481a6b6a4",
|
||||
[]
|
||||
]
|
||||
}
|
||||
|
@ -353611,7 +353883,7 @@
|
|||
]
|
||||
},
|
||||
"requirements.txt": [
|
||||
"d1d733b86b21cc17978a08b1715d6917e3d3b747",
|
||||
"8ac1d9f78b058115e67d929a98cd7b6dd50099c4",
|
||||
[]
|
||||
],
|
||||
"requirements_android_webview.txt": [
|
||||
|
@ -355302,6 +355574,72 @@
|
|||
"572db0c01b620dd317f2079df6d0ea7cff6333fe",
|
||||
[]
|
||||
],
|
||||
"functions": {
|
||||
"helper.js": [
|
||||
"487791c69ad43043985e38ae7ea37d540695fde4",
|
||||
[]
|
||||
],
|
||||
"resources": {
|
||||
"README.md": [
|
||||
"a89258a4e01267a27ff25e559d69a1a85f0c314e",
|
||||
[]
|
||||
],
|
||||
"current": {
|
||||
"current.html": [
|
||||
"63d9c437fc56833786c4e309cd8a3080c46c5564",
|
||||
[]
|
||||
],
|
||||
"resources": {
|
||||
"window-to-open.html": [
|
||||
"1bc4cca9a3920f903008748e3a1e121b9163823b",
|
||||
[]
|
||||
]
|
||||
}
|
||||
},
|
||||
"entry-incumbent.html": [
|
||||
"6b210563e99bc22e2581904affefe1a640b0e8a4",
|
||||
[]
|
||||
],
|
||||
"function": {
|
||||
"function.html": [
|
||||
"979b902eaa0e173ccb87be418ca408e4b0199c55",
|
||||
[]
|
||||
],
|
||||
"resources": {
|
||||
"window-to-open.html": [
|
||||
"3928c1f8aa9e96ed83b37ce141c0ec4d034d3510",
|
||||
[]
|
||||
]
|
||||
}
|
||||
},
|
||||
"incumbent-incumbent.html": [
|
||||
"5e84f65a084e685e071792fb0e0c405c63142e8e",
|
||||
[]
|
||||
],
|
||||
"relevant": {
|
||||
"relevant.html": [
|
||||
"06df91c23741f517fd6a88662f5866cd51531221",
|
||||
[]
|
||||
],
|
||||
"resources": {
|
||||
"window-to-open.html": [
|
||||
"4138b5a084409da5673b86e1db29cac3ebdad2eb",
|
||||
[]
|
||||
]
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"window-to-open.html": [
|
||||
"7743b9b578201e8b6be7ded139af339afa20531e",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"window-to-open.html": [
|
||||
"ce357937f5e4f9895206ba7cf58dd5d6e5aa2c35",
|
||||
[]
|
||||
]
|
||||
}
|
||||
},
|
||||
"instanceTestFactory.js": [
|
||||
"86f593f46f8c6c159ce2f5a6bc39b0aa5b6eb189",
|
||||
[]
|
||||
|
@ -355319,7 +355657,7 @@
|
|||
]
|
||||
},
|
||||
"wasm-module-builder.js": [
|
||||
"82c6e04135f1b86df1a1d8e72c5f829c3297bb10",
|
||||
"25fb1c836b05e28a1e692dd31dd6061979483b1f",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -452886,7 +453224,7 @@
|
|||
"cross-origin-opener-policy": {
|
||||
"access-reporting": {
|
||||
"openee-accessed_openee-coop-ro.https.html": [
|
||||
"7385550222abb152daa0f3bf3410278dc486977a",
|
||||
"5d4bb06453b8035db887806a23ed42cda62d6297",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -452895,7 +453233,25 @@
|
|||
]
|
||||
],
|
||||
"openee-accessed_openee-coop.https.html": [
|
||||
"2c94253bcecb7c64b0ad56e285db4a739bc9d44a",
|
||||
"0b68205672b7aa5a90820eaa5472cd6d2ae36bae",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"openee-accessed_opener-coop-ro.https.html": [
|
||||
"b40aa9505fea5ee7b55f790944390cdeda171f22",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"openee-accessed_opener-coop.https.html": [
|
||||
"e70e5310a5a852ea3659b29edc1e20d5d8824889",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -452904,7 +453260,7 @@
|
|||
]
|
||||
],
|
||||
"opener-accessed_openee-coop-ro.https.html": [
|
||||
"8d07e27bb7c7e4c6e78190605d7eb5f3d07eaf76",
|
||||
"4c3259ed570301683a99c0b2696619453720f1d4",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -452913,7 +453269,25 @@
|
|||
]
|
||||
],
|
||||
"opener-accessed_openee-coop.https.html": [
|
||||
"ae5bea87680f668439b775badcda3d20a1d51341",
|
||||
"03dd9d86c54e4badbd36d040301230f281ec37ac",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"opener-accessed_opener-coop-ro.https.html": [
|
||||
"5b72e569ce59ba1d73b3852576666ab6308766f4",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"opener-accessed_opener-coop.https.html": [
|
||||
"1729f601e126726ebb7d719541b0353f0d203834",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -465260,6 +465634,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"nested-imports.html": [
|
||||
"23bb595d0ebce1fbe14a3b72ce34fc1efa2720fe",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"nomodule-attribute.html": [
|
||||
"656c99b292ac03f401eead1c4798666de61ca91a",
|
||||
[
|
||||
|
@ -472299,6 +472680,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"image-removed-before-load.html": [
|
||||
"b4e92b4e9a5c8aaa24a590ad272eda6c14c15bf8",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"image-src-change.html": [
|
||||
"bd78476390c8c9df170bdd59211bb3756142e9aa",
|
||||
[
|
||||
|
@ -473722,14 +474110,14 @@
|
|||
]
|
||||
],
|
||||
"dynamic-childlist-001.html": [
|
||||
"8098c720fea39ab47ad08489aa5ebf7a32aa1930",
|
||||
"1d49169037fbcb6a94485b2c65be8c427c7c4767",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"dynamic-childlist-002.html": [
|
||||
"d874e80bbba6cccb88fe5e79c51af72b087d75e3",
|
||||
"f722512f7259522a2c77f4ae7f985a85bd5b10e8",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -477052,7 +477440,7 @@
|
|||
]
|
||||
],
|
||||
"opaque-origin.https.window.js": [
|
||||
"265514760b691b4032123fd058dc2a9221f135b7",
|
||||
"a916592406e721ed16980236114a5eac266fc0bf",
|
||||
[
|
||||
"native-file-system/opaque-origin.https.window.html",
|
||||
{}
|
||||
|
@ -477868,6 +478256,20 @@
|
|||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"showPicker-errors.https.window.js": [
|
||||
"1f1d2edd63d0850622ff3260addfa1270a70084f",
|
||||
[
|
||||
"native-file-system/showPicker-errors.https.window.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"script",
|
||||
"resources/test-helpers.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"native-io": {
|
||||
|
@ -483139,6 +483541,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"preload-link-cached-stylesheet-different-doc.html": [
|
||||
"8df1383fccd45728428b38e496400910772b36c6",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"preload-strict-dynamic.html": [
|
||||
"76395656f9b359e05ae1aeace5ad05a6f338cb5e",
|
||||
[
|
||||
|
@ -494950,7 +495359,7 @@
|
|||
]
|
||||
],
|
||||
"getScreens.values.https.html": [
|
||||
"3d70a7c81cf6548f28dbe8fbfb7c438901e03060",
|
||||
"3b8060786e13fc1c11f9b54b4c3e927ecab1e43b",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -496902,7 +497311,7 @@
|
|||
]
|
||||
],
|
||||
"fetch-event.https.html": [
|
||||
"169a0b17d6230335fb0c83988039875c815d99e1",
|
||||
"48f71e46cb22136958f63aedd3ff16758a5de581",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -500062,7 +500471,7 @@
|
|||
},
|
||||
"streams": {
|
||||
"idlharness.any.js": [
|
||||
"e9f085bfc0e11ba5a3952474a338b3b916670aa9",
|
||||
"42a17da58c5ae390234ee394303aa2fe6a72ebdd",
|
||||
[
|
||||
"streams/idlharness.any.html",
|
||||
{
|
||||
|
@ -511785,6 +512194,29 @@
|
|||
]
|
||||
]
|
||||
},
|
||||
"functions": {
|
||||
"entry-different-function-realm.html": [
|
||||
"3af3dd924fb435e8cdcd4bb19f01948b77318dbf",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"entry.html": [
|
||||
"15018074491054dcb9e2f95c0d9c9d1691c9161a",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"incumbent.html": [
|
||||
"cb2763297709a8ecdddd8541d2b332577102cd35",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"global": {
|
||||
"constructor.any.js": [
|
||||
"f536f5d7b5df6c91d74b17f9512abfebe8ac9b35",
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-004.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -2,3 +2,6 @@
|
|||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -8,6 +8,3 @@
|
|||
[throws if handleEvent is thruthy and not callable]
|
||||
expected: FAIL
|
||||
|
||||
[doesn't look up handleEvent method on callable event listeners]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
||||
|
|
@ -21,3 +21,6 @@
|
|||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
[test some point of the element: top left corner]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
[offsetTopLeft-border-box.html]
|
||||
[container: 1]
|
||||
expected: FAIL
|
||||
|
||||
[container: 0]
|
||||
expected: FAIL
|
||||
|
|
@ -312,24 +312,21 @@
|
|||
[fetch(): separate response Content-Type: text/plain ]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -53,3 +53,6 @@
|
|||
[combined text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript x/x]
|
||||
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%22nosniFF%22]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_3.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[cross-origin-objects-on-new-window.html]
|
||||
expected: TIMEOUT
|
|
@ -1,5 +1,4 @@
|
|||
[embedded-opener-remove-frame.html]
|
||||
expected: CRASH
|
||||
[opener and "removed" embedded documents]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -7,5 +6,5 @@
|
|||
expected: FAIL
|
||||
|
||||
[opener of discarded auxiliary browsing context]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -323,3 +323,6 @@
|
|||
[Whitespace collapses across element boundaries at soft break (3) ("<div style='width:1px; word-break:break-word'><x>Hello </x><x> Kitty</x></div>")]
|
||||
expected: FAIL
|
||||
|
||||
[<svg> text contents preserved ("<div><svg><text>abc</text></svg></div>")]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-1.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: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-2.html]
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
[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
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[form-double-submit-2.html]
|
||||
[preventDefault should allow onclick submit() to succeed]
|
||||
expected: FAIL
|
||||
|
|
@ -4,6 +4,3 @@
|
|||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: TIMEOUT
|
||||
|
||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
[promise-job-entry.html]
|
||||
expected: TIMEOUT
|
||||
[Fulfillment handler on fulfilled promise]
|
||||
expected: FAIL
|
||||
|
||||
[Rejection handler on pending-then-rejected promise]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Sanity check: this all works as expected with no promises involved]
|
||||
expected: FAIL
|
||||
|
@ -16,5 +15,5 @@
|
|||
expected: FAIL
|
||||
|
||||
[Fulfillment handler on pending-then-fulfilled promise]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
[entry-different-function-realm.html]
|
||||
expected: ERROR
|
||||
[Start function]
|
||||
expected: TIMEOUT
|
||||
|
7
tests/wpt/metadata/wasm/jsapi/functions/entry.html.ini
Normal file
7
tests/wpt/metadata/wasm/jsapi/functions/entry.html.ini
Normal file
|
@ -0,0 +1,7 @@
|
|||
[entry.html]
|
||||
[Start function]
|
||||
expected: FAIL
|
||||
|
||||
[Sanity check: this all works as expected synchronously]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[incumbent.html]
|
||||
expected: TIMEOUT
|
||||
[Start function]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
[003.html]
|
||||
type: testharness
|
||||
expected: ERROR
|
||||
[shared]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,31 +1,43 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS Backgrounds: background-image :first-letter layered images</title>
|
||||
<link rel="author" title="Justin Hill" href="http://www.justin-hill.com">
|
||||
<link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-image">
|
||||
<link rel="match" href="reference/background-image-001-ref.html">
|
||||
<meta name="assert" content="Test checks that background-image displays multiple images in correct order on :first-letter selector.">
|
||||
<style>
|
||||
.container {
|
||||
top:50px;
|
||||
left:50px;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Backgrounds and Borders Test: ::first-letter with multiple background images</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
<link rel="author" title="Justin Hill" href="http://www.justin-hill.com">
|
||||
<link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-image">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#first-letter-styling">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
|
||||
|
||||
<!--
|
||||
|
||||
More information:
|
||||
|
||||
https://github.com/web-platform-tests/wpt/issues/22261
|
||||
|
||||
-->
|
||||
|
||||
<meta name="assert" content="This test checks that 'background-image' applies to ::first-letter pseudo-element and that, in case of multiple background images, the first specified one must be on top (closest to the user).">
|
||||
|
||||
<style>
|
||||
div
|
||||
{
|
||||
color: transparent;
|
||||
/* So that background shines through both "A" and "Z" glyphs */
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.container p:first-letter {
|
||||
width:100px;
|
||||
height:100px;
|
||||
color:transparent;
|
||||
font-size: 50px;
|
||||
background-image: url("support/green.png"), url("support/red.png");
|
||||
div::first-letter
|
||||
{
|
||||
background-color: red;
|
||||
display: block;
|
||||
margin: 0px;
|
||||
background-image: url("support/1x1-green.png"), url("../support/60x60-red.png");
|
||||
font-family: Ahem;
|
||||
font-size: 100px;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<p> Test passes if green image shows and no red visable.</p>
|
||||
<div class="container">
|
||||
<p>x</p>
|
||||
</div>
|
||||
</body>
|
||||
</style>
|
||||
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.
|
||||
|
||||
<div>AZ</div>
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS aspect-ratio: min-content size contribution in an orthogonal flow</title>
|
||||
<link rel="author" title="Google LLC" href="https://www.google.com/">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio">
|
||||
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht" />
|
||||
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
|
||||
<div style="width: min-content; height: 100px; background: green;">
|
||||
<div style="height: 100px; aspect-ratio: 1/1; writing-mode: vertical-lr;"></div>
|
||||
</div>
|
||||
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS aspect-ratio: min-content size contribution with percentage block size</title>
|
||||
<link rel="author" title="Google LLC" href="https://www.google.com/">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio">
|
||||
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht" />
|
||||
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
|
||||
<div style="width: min-content; height: 100px; background: green;">
|
||||
<div style="height: 100%;">
|
||||
<div style="height: 100%; aspect-ratio: 1/1;"></div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,16 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS aspect-ratio: min-content size contribution with indefinite percentage block size</title>
|
||||
<link rel="author" title="Google LLC" href="https://www.google.com/">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio">
|
||||
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht" />
|
||||
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
|
||||
<div style="width: min-content; background: green;">
|
||||
<!-- Indefinite height here - we should "fall through" to the
|
||||
inner div and calculate 100px, instead of treating 100% as 0. -->
|
||||
<div style="height: 100%; aspect-ratio: 1/1;">
|
||||
<div style="width: 100px; height: 100px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS aspect-ratio: min-content size contribution with percentage block size</title>
|
||||
<link rel="author" title="Google LLC" href="https://www.google.com/">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio">
|
||||
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht" />
|
||||
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
|
||||
<div id="target" style="width: min-content; height: 200px; background: green;">
|
||||
<div style="height: 100%;">
|
||||
<div style="height: 100%; aspect-ratio: 1/1;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
document.body.offsetTop;
|
||||
document.getElementById('target').style.height = '100px';
|
||||
</script>
|
|
@ -0,0 +1,79 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Text Decoration Test: Thickness on decorating element</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#text-decoration-width-property"/>
|
||||
<meta name="assert" content="text-decoration-thickness affects all decorations originating from this element."/>
|
||||
<link rel="author" title="Dominik Röttsches" href="mailto:drott@chromium.org"/>
|
||||
<style>
|
||||
.test {
|
||||
font-size: 32px;
|
||||
}
|
||||
|
||||
.underline {
|
||||
text-decoration: underline;
|
||||
text-underline-position: from-font;
|
||||
}
|
||||
|
||||
.thickness_outer_9 {
|
||||
text-decoration-thickness: 90px;
|
||||
text-decoration-color: #ff3366;
|
||||
}
|
||||
.thickness_outer_8 {
|
||||
text-decoration-thickness: 80px;
|
||||
text-decoration-color: #ff6633;
|
||||
}
|
||||
|
||||
.thickness_outer_7 {
|
||||
text-decoration-thickness: 70px;
|
||||
text-decoration-color: #FFCC33;
|
||||
}
|
||||
|
||||
.thickness_outer_6 {
|
||||
text-decoration-thickness: 60px;
|
||||
text-decoration-color: #33FF66;
|
||||
}
|
||||
|
||||
.thickness_outer_5 {
|
||||
text-decoration-thickness: 50px;
|
||||
text-decoration-color: #33FFCC;
|
||||
}
|
||||
|
||||
.thickness_outer_4 {
|
||||
text-decoration-thickness: 40px;
|
||||
text-decoration-color: #33CCFF;
|
||||
}
|
||||
|
||||
.thickness_outer_3 {
|
||||
text-decoration-thickness: 30px;
|
||||
text-decoration-color: #3366FF;
|
||||
}
|
||||
|
||||
.thickness_outer_2 {
|
||||
text-decoration-thickness: 20px;
|
||||
text-decoration-color: #6633FF;
|
||||
}
|
||||
|
||||
.thickness_outer_1 {
|
||||
text-decoration-thickness: 10px;
|
||||
text-decoration-color: #CC33FF;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test passes if a rainbow pattern is seen in equal portions horizontally from left to right and vertically on the
|
||||
right side, with L shaped segments of underline for each color.</p>
|
||||
<div class="test">
|
||||
<span class="underline thickness_outer_9">X<span class="underline thickness_outer_8">X<span class="underline thickness_outer_7">X<span class="underline thickness_outer_6">X<span class="underline thickness_outer_5">X<span class="underline thickness_outer_4">X<span class="underline thickness_outer_3">X<span class="underline thickness_outer_2">X<span class="underline thickness_outer_1">X</span></span>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,5 +1,5 @@
|
|||
Template-Python==0.1.post1
|
||||
html5lib==1.0.1
|
||||
html5lib==1.1
|
||||
lxml==4.1.1
|
||||
mercurial==4.5
|
||||
six==1.15.0
|
||||
|
|
|
@ -58,33 +58,21 @@ operation.forEach(([property, op]) => {
|
|||
let reply = await receive(callback_token);
|
||||
assert_equals(reply, "Ready");
|
||||
|
||||
// 2. Skip the first report about the opener breakage.
|
||||
let report_1 = await receive(report_token);
|
||||
assert_not_equals(report_1, "timeout",
|
||||
"Receive navigation-to-document report");
|
||||
report_1 = JSON.parse(report_1);
|
||||
assert_equals(report_1.length, 1);
|
||||
assert_equals(report_1[0].type, "coop");
|
||||
assert_equals(report_1[0].body["violation-type"], "navigation-to-document");
|
||||
assert_equals(report_1[0].body["disposition"], "reporting");
|
||||
|
||||
// 3. Try to access the openee. A report is sent, because of COOP-RO+COEP.
|
||||
// 2. Try to access the openee. A report is sent, because of COOP-RO+COEP.
|
||||
try {op(openee)} catch(e) {}
|
||||
|
||||
// 4. A COOP access reports must be sent as a result of (3).
|
||||
let report_2 = await receive(report_token);
|
||||
assert_not_equals(report_2, "timeout", "Receive access report");
|
||||
report_2 = JSON.parse(report_2);
|
||||
assert_equals(report_2.length, 1);
|
||||
assert_equals(report_2[0].type, "coop");
|
||||
assert_equals(report_2[0].url, openee_url.replace(/"/g, '%22'));
|
||||
assert_equals(report_2[0].body["violation-type"], "access-to-coop-page");
|
||||
assert_equals(report_2[0].body["disposition"], "reporting");
|
||||
assert_equals(report_2[0].body["effective-policy"], "same-origin-plus-coep");
|
||||
assert_equals(report_2[0].body["property"], property);
|
||||
assert_equals(report_2[0].body["source-file"], undefined);
|
||||
assert_equals(report_2[0].body["lineno"], undefined);
|
||||
assert_equals(report_2[0].body["colno"], undefined);
|
||||
// 3. Check a report is sent to the openee.
|
||||
let report = await receiveReport(report_token, "access-to-coop-page")
|
||||
assert_not_equals(report, "timeout", "Report not received");
|
||||
assert_equals(report.type, "coop");
|
||||
assert_equals(report.url, openee_url.replace(/"/g, '%22'));
|
||||
assert_equals(report.body["violation-type"], "access-to-coop-page");
|
||||
assert_equals(report.body["disposition"], "reporting");
|
||||
assert_equals(report.body["effective-policy"], "same-origin-plus-coep");
|
||||
assert_equals(report.body["property"], property);
|
||||
assert_equals(report.body["source-file"], undefined);
|
||||
assert_equals(report.body["lineno"], undefined);
|
||||
assert_equals(report.body["colno"], undefined);
|
||||
// TODO(arthursonzogni): Add check for report > body > blocked-window-url
|
||||
}, `${op}`);
|
||||
});
|
||||
|
|
|
@ -58,33 +58,21 @@ operation.forEach(([property, op]) => {
|
|||
let reply = await receive(callback_token);
|
||||
assert_equals(reply, "Ready");
|
||||
|
||||
// 2. Skip the first report about the opener breakage.
|
||||
let report_1 = await receive(report_token);
|
||||
assert_not_equals(report_1, "timeout",
|
||||
"Receive navigation-to-document report");
|
||||
report_1 = JSON.parse(report_1);
|
||||
assert_equals(report_1.length, 1);
|
||||
assert_equals(report_1[0].type, "coop");
|
||||
assert_equals(report_1[0].body["violation-type"], "navigation-to-document");
|
||||
assert_equals(report_1[0].body["disposition"], "enforce");
|
||||
|
||||
// 3. Try to access the openee. This shouldn't work because of COOP+COEP.
|
||||
// 2. Try to access the openee. This shouldn't work because of COOP+COEP.
|
||||
try {op(openee)} catch(e) {}
|
||||
|
||||
// 4. A COOP access reports must be sent as a result of (3).
|
||||
let report_2 = await receive(report_token);
|
||||
assert_not_equals(report_2, "timeout", "Receive access report");
|
||||
report_2 = JSON.parse(report_2);
|
||||
assert_equals(report_2.length, 1);
|
||||
assert_equals(report_2[0].type, "coop");
|
||||
assert_equals(report_2[0].url, openee_url.replace(/"/g, '%22'));
|
||||
assert_equals(report_2[0].body["violation-type"], "access-to-coop-page");
|
||||
assert_equals(report_2[0].body["disposition"], "enforce");
|
||||
assert_equals(report_2[0].body["effective-policy"], "same-origin-plus-coep");
|
||||
assert_equals(report_2[0].body["property"], property);
|
||||
assert_equals(report_2[0].body["source-file"], undefined);
|
||||
assert_equals(report_2[0].body["lineno"], undefined);
|
||||
assert_equals(report_2[0].body["colno"], undefined);
|
||||
// 3. Check a report is sent to the openee.
|
||||
let report = await receiveReport(report_token, "access-to-coop-page")
|
||||
assert_not_equals(report, "timeout", "Report not received");
|
||||
assert_equals(report.type, "coop");
|
||||
assert_equals(report.url, openee_url.replace(/"/g, '%22'));
|
||||
assert_equals(report.body["violation-type"], "access-to-coop-page");
|
||||
assert_equals(report.body["disposition"], "enforce");
|
||||
assert_equals(report.body["effective-policy"], "same-origin-plus-coep");
|
||||
assert_equals(report.body["property"], property);
|
||||
assert_equals(report.body["source-file"], undefined);
|
||||
assert_equals(report.body["lineno"], undefined);
|
||||
assert_equals(report.body["colno"], undefined);
|
||||
// TODO(arthursonzogni): Add check for report > body > blocked-window-url
|
||||
|
||||
}, `${op}`);
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
<title>
|
||||
COOP reports are to the opener when the opener used COOP-RO+COEP and then it
|
||||
tries to access a cross-origin openee.
|
||||
</title>
|
||||
<meta name=timeout content=long>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/common/get-host-info.sub.js></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<script src="./resources/dispatcher.js"></script>
|
||||
<script>
|
||||
|
||||
const directory = "/html/cross-origin-opener-policy/access-reporting";
|
||||
const executor_path = directory + "/resources/executor.html?pipe=";
|
||||
const same_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
|
||||
promise_test(async t => {
|
||||
// The test window.
|
||||
const this_window_token = token();
|
||||
|
||||
// The "opener" window. This has COOP and a reporter.
|
||||
const opener_report_token= token();
|
||||
const opener_token = token();
|
||||
const opener_reportTo = reportToHeaders(opener_report_token);
|
||||
const opener_url = same_origin + executor_path + opener_reportTo.header +
|
||||
opener_reportTo.coopReportOnlySameOriginHeader + coep_header +
|
||||
`&uuid=${opener_token}`;
|
||||
|
||||
// The "openee" window. This is cross origin with the "opener".
|
||||
const openee_report_token= token();
|
||||
const openee_token = token();
|
||||
const openee_url = same_origin + executor_path + `&uuid=${openee_token}`;
|
||||
|
||||
// 1. Create the opener window.
|
||||
let opener_window_proxy = window.open(opener_url);
|
||||
t.add_cleanup(() => send(opener_token, "window.close()"));
|
||||
|
||||
// 2. The opener opens it openee.
|
||||
send(opener_token, `
|
||||
let openee = window.open("${openee_url}");
|
||||
send("${this_window_token}", "ACK 1");
|
||||
`);
|
||||
assert_equals("ACK 1", await receive(this_window_token));
|
||||
t.add_cleanup(() => send(openee_token, "window.close()"));
|
||||
|
||||
// 3. Ensure the openee's document to be loaded.
|
||||
send(openee_token, `
|
||||
send("${this_window_token}", "ACK 2");
|
||||
`);
|
||||
assert_equals("ACK 2", await receive(this_window_token));
|
||||
|
||||
// 4. The opener tries to access its openee.
|
||||
send(opener_token, `
|
||||
try {openee.blur()} catch(e) {}
|
||||
`);
|
||||
|
||||
// 5. Check a report sent to the opener.
|
||||
let report = await receiveReport(opener_report_token, "access-from-coop-page")
|
||||
assert_not_equals(report, "timeout", "Report not received");
|
||||
assert_equals(report.type, "coop");
|
||||
assert_equals(report.url, openee_url.replace(/"/g, '%22'));
|
||||
assert_equals(report.body["violation-type"], "access-from-coop-page");
|
||||
assert_equals(report.body["disposition"], "reporting");
|
||||
assert_equals(report.body["effective-policy"], "same-origin-plus-coep");
|
||||
assert_equals(report.body["property"], "blur");
|
||||
assert_equals(report.body["source-file"], undefined);
|
||||
assert_equals(report.body["lineno"], undefined);
|
||||
assert_equals(report.body["colno"], undefined);
|
||||
// TODO(arthursonzogni): Check the window-blocked-url.
|
||||
}, "Opener (COOP-RO+COEP) access cross origin openee");
|
||||
|
||||
</script>
|
|
@ -0,0 +1,74 @@
|
|||
<title>
|
||||
COOP reports are to the opener when the opener used COOP+COEP and then it
|
||||
tries to access a cross-origin openee.
|
||||
</title>
|
||||
<meta name=timeout content=long>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/common/get-host-info.sub.js></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<script src="./resources/dispatcher.js"></script>
|
||||
<script>
|
||||
|
||||
const directory = "/html/cross-origin-opener-policy/access-reporting";
|
||||
const executor_path = directory + "/resources/executor.html?pipe=";
|
||||
const same_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
|
||||
promise_test(async t => {
|
||||
// The test window.
|
||||
const this_window_token = token();
|
||||
|
||||
// The "opener" window. This has COOP and a reporter.
|
||||
const opener_report_token= token();
|
||||
const opener_token = token();
|
||||
const opener_reportTo = reportToHeaders(opener_report_token);
|
||||
const opener_url = same_origin + executor_path + opener_reportTo.header +
|
||||
opener_reportTo.coopSameOriginHeader + coep_header +
|
||||
`&uuid=${opener_token}`;
|
||||
|
||||
// The "openee" window. This is cross origin with the "opener".
|
||||
const openee_report_token= token();
|
||||
const openee_token = token();
|
||||
const openee_url = same_origin + executor_path + `&uuid=${openee_token}`;
|
||||
|
||||
// 1. Create the opener window.
|
||||
let opener_window_proxy = window.open(opener_url);
|
||||
t.add_cleanup(() => send(opener_token, "window.close()"));
|
||||
|
||||
// 2. The opener opens it openee.
|
||||
send(opener_token, `
|
||||
let openee = window.open("${openee_url}");
|
||||
send("${this_window_token}", "ACK 1");
|
||||
`);
|
||||
assert_equals("ACK 1", await receive(this_window_token));
|
||||
t.add_cleanup(() => send(openee_token, "window.close()"));
|
||||
|
||||
// 3. Ensure the openee's document to be loaded.
|
||||
send(openee_token, `
|
||||
send("${this_window_token}", "ACK 2");
|
||||
`);
|
||||
assert_equals("ACK 2", await receive(this_window_token));
|
||||
|
||||
// 4. The opener tries to access its openee.
|
||||
send(opener_token, `
|
||||
try {openee.blur()} catch(e) {}
|
||||
`);
|
||||
|
||||
// 5. Check a report sent to the opener.
|
||||
let report = await receiveReport(opener_report_token, "access-from-coop-page")
|
||||
assert_not_equals(report, "timeout", "Report not received");
|
||||
assert_equals(report.type, "coop");
|
||||
assert_equals(report.url, openee_url.replace(/"/g, '%22'));
|
||||
assert_equals(report.body["violation-type"], "access-from-coop-page");
|
||||
assert_equals(report.body["disposition"], "enforce");
|
||||
assert_equals(report.body["effective-policy"], "same-origin-plus-coep");
|
||||
assert_equals(report.body["property"], "blur");
|
||||
assert_equals(report.body["source-file"], undefined);
|
||||
assert_equals(report.body["lineno"], undefined);
|
||||
assert_equals(report.body["colno"], undefined);
|
||||
// TODO(arthursonzogni): Check the window-blocked-url.
|
||||
}, "Opener (COOP+COEP) access cross origin openee");
|
||||
|
||||
</script>
|
|
@ -64,26 +64,20 @@ operation.forEach(([property, op]) => {
|
|||
// 3. Try to access the opener. A report is sent, because of COOP-RO+COEP.
|
||||
send(executor_token, `
|
||||
try {${op}} catch(e) {}
|
||||
send("${callback_token}", "Done");
|
||||
`);
|
||||
let reply = await receive(callback_token);
|
||||
assert_equals(reply, "Done");
|
||||
|
||||
// 4. A COOP access reports must be sent as a result of (3).
|
||||
let report_2 = await receive(report_token);
|
||||
assert_not_equals(report_2, "timeout", "Receive access report");
|
||||
report_2 = JSON.parse(report_2);
|
||||
|
||||
assert_equals(report_2.length, 1);
|
||||
assert_equals(report_2[0].type, "coop");
|
||||
assert_equals(report_2[0].url, openee_url.replace(/"/g, '%22'));
|
||||
assert_equals(report_2[0].body["violation-type"], "access-from-coop-page");
|
||||
assert_equals(report_2[0].body["disposition"], "reporting");
|
||||
assert_equals(report_2[0].body["effective-policy"], "same-origin-plus-coep");
|
||||
assert_equals(report_2[0].body["property"], property);
|
||||
assert_equals(report_2[0].body["source-file"], undefined);
|
||||
assert_equals(report_2[0].body["lineno"], undefined);
|
||||
assert_equals(report_2[0].body["colno"], undefined);
|
||||
// 3. Check a report is sent to the openee.
|
||||
let report = await receiveReport(report_token, "access-from-coop-page")
|
||||
assert_not_equals(report, "timeout", "Report not received");
|
||||
assert_equals(report.type, "coop");
|
||||
assert_equals(report.url, openee_url.replace(/"/g, '%22'));
|
||||
assert_equals(report.body["violation-type"], "access-from-coop-page");
|
||||
assert_equals(report.body["disposition"], "reporting");
|
||||
assert_equals(report.body["effective-policy"], "same-origin-plus-coep");
|
||||
assert_equals(report.body["property"], property);
|
||||
assert_equals(report.body["source-file"], undefined);
|
||||
assert_equals(report.body["lineno"], undefined);
|
||||
assert_equals(report.body["colno"], undefined);
|
||||
}, `${op})`);
|
||||
});
|
||||
|
||||
|
|
|
@ -51,39 +51,23 @@ operation.forEach(([property, op]) => {
|
|||
const openee = window.open(openee_url);
|
||||
t.add_cleanup(() => send(executor_token, "window.close()"));
|
||||
|
||||
// 1. Skip the first report about the opener breakage.
|
||||
let report_1 = await receive(report_token);
|
||||
assert_not_equals(report_1, "timeout",
|
||||
"Receive navigation-to-document report");
|
||||
report_1 = JSON.parse(report_1);
|
||||
assert_equals(report_1.length, 1);
|
||||
assert_equals(report_1[0].type, "coop");
|
||||
assert_equals(report_1[0].body["violation-type"], "navigation-to-document");
|
||||
assert_equals(report_1[0].body["disposition"], "enforce");
|
||||
|
||||
// 3. Try to access the opener. A report is sent, because of COOP+COEP.
|
||||
// 2. Try to access the opener. A report is sent, because of COOP+COEP.
|
||||
send(executor_token, `
|
||||
try {${op}} catch(e) {}
|
||||
send("${callback_token}", "Done");
|
||||
`);
|
||||
let reply = await receive(callback_token);
|
||||
assert_equals(reply, "Done");
|
||||
|
||||
// 4. A COOP access reports must be sent as a result of (3).
|
||||
let report_2 = await receive(report_token);
|
||||
assert_not_equals(report_2, "timeout", "Received access report");
|
||||
report_2 = JSON.parse(report_2);
|
||||
|
||||
assert_equals(report_2.length, 1);
|
||||
assert_equals(report_2[0].type, "coop");
|
||||
assert_equals(report_2[0].url, openee_url.replace(/"/g, '%22'));
|
||||
assert_equals(report_2[0].body["violation-type"], "access-from-coop-page");
|
||||
assert_equals(report_2[0].body["disposition"], "enforce");
|
||||
assert_equals(report_2[0].body["effective-policy"], "same-origin-plus-coep");
|
||||
assert_equals(report_2[0].body["property"], property);
|
||||
assert_equals(report_2[0].body["source-file"], undefined);
|
||||
assert_equals(report_2[0].body["lineno"], undefined);
|
||||
assert_equals(report_2[0].body["colno"], undefined);
|
||||
// 3. Check a report is sent to the openee.
|
||||
let report = await receiveReport(report_token, "access-from-coop-page")
|
||||
assert_not_equals(report, "timeout", "Report not received");
|
||||
assert_equals(report.type, "coop");
|
||||
assert_equals(report.url, openee_url.replace(/"/g, '%22'));
|
||||
assert_equals(report.body["violation-type"], "access-from-coop-page");
|
||||
assert_equals(report.body["disposition"], "enforce");
|
||||
assert_equals(report.body["effective-policy"], "same-origin-plus-coep");
|
||||
assert_equals(report.body["property"], property);
|
||||
assert_equals(report.body["source-file"], undefined);
|
||||
assert_equals(report.body["lineno"], undefined);
|
||||
assert_equals(report.body["colno"], undefined);
|
||||
}, `${op}`);
|
||||
});
|
||||
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
<title>
|
||||
COOP reports are to the opener when the opener used COOP-RO+COEP and then its
|
||||
cross-origin openee tries to access it.
|
||||
</title>
|
||||
<meta name=timeout content=long>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/common/get-host-info.sub.js></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<script src="./resources/dispatcher.js"></script>
|
||||
<script>
|
||||
|
||||
const directory = "/html/cross-origin-opener-policy/access-reporting";
|
||||
const executor_path = directory + "/resources/executor.html?pipe=";
|
||||
const same_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
|
||||
promise_test(async t => {
|
||||
// The test window.
|
||||
const this_window_token = token();
|
||||
|
||||
// The "opener" window. This has COOP and a reporter.
|
||||
const opener_report_token= token();
|
||||
const opener_token = token();
|
||||
const opener_reportTo = reportToHeaders(opener_report_token);
|
||||
const opener_url = same_origin + executor_path + opener_reportTo.header +
|
||||
opener_reportTo.coopReportOnlySameOriginHeader + coep_header +
|
||||
`&uuid=${opener_token}`;
|
||||
|
||||
// The "openee" window. This is cross origin with the "opener".
|
||||
const openee_report_token= token();
|
||||
const openee_token = token();
|
||||
const openee_url = same_origin + executor_path + `&uuid=${openee_token}`;
|
||||
|
||||
// 1. Create the opener window.
|
||||
let opener_window_proxy = window.open(opener_url);
|
||||
t.add_cleanup(() => send(opener_token, "window.close()"));
|
||||
|
||||
// 2. The opener opens its openee.
|
||||
send(opener_token, `
|
||||
let openee = window.open("${openee_url}");
|
||||
send("${this_window_token}", "ACK 1");
|
||||
`);
|
||||
assert_equals("ACK 1", await receive(this_window_token));
|
||||
t.add_cleanup(() => send(openee_token, "window.close()"));
|
||||
|
||||
// 3. The openee tries to access its opener.
|
||||
send(openee_token, `
|
||||
try {opener.blur()} catch(e) {}
|
||||
send("${this_window_token}", "ACK 3");
|
||||
`);
|
||||
assert_equals("ACK 3", await receive(this_window_token));
|
||||
|
||||
// 4. Check a report sent to the opener.
|
||||
let report = await receiveReport(opener_report_token, "access-to-coop-page")
|
||||
assert_not_equals(report, "timeout", "Report not received");
|
||||
assert_equals(report.type, "coop");
|
||||
assert_equals(report.url, openee_url.replace(/"/g, '%22'));
|
||||
assert_equals(report.body["violation-type"], "access-to-coop-page");
|
||||
assert_equals(report.body["disposition"], "reporting");
|
||||
assert_equals(report.body["effective-policy"], "same-origin-plus-coep");
|
||||
assert_equals(report.body["property"], "blur");
|
||||
assert_equals(report.body["source-file"], undefined);
|
||||
assert_equals(report.body["lineno"], undefined);
|
||||
assert_equals(report.body["colno"], undefined);
|
||||
// TODO(arthursonzogni): Check the window-blocked-url.
|
||||
}, "Opener (COOP-RO+COEP) accessed by cross origin openee");
|
||||
|
||||
</script>
|
|
@ -0,0 +1,68 @@
|
|||
<title>
|
||||
COOP reports are to the opener when the opener used COOP+COEP and then its
|
||||
cross-origin openee tries to access it.
|
||||
</title>
|
||||
<meta name=timeout content=long>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/common/get-host-info.sub.js></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<script src="./resources/dispatcher.js"></script>
|
||||
<script>
|
||||
|
||||
const directory = "/html/cross-origin-opener-policy/access-reporting";
|
||||
const executor_path = directory + "/resources/executor.html?pipe=";
|
||||
const same_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
|
||||
promise_test(async t => {
|
||||
// The test window.
|
||||
const this_window_token = token();
|
||||
|
||||
// The "opener" window. This has COOP and a reporter.
|
||||
const opener_report_token= token();
|
||||
const opener_token = token();
|
||||
const opener_reportTo = reportToHeaders(opener_report_token);
|
||||
const opener_url = same_origin + executor_path + opener_reportTo.header +
|
||||
opener_reportTo.coopSameOriginHeader + coep_header +
|
||||
`&uuid=${opener_token}`;
|
||||
|
||||
// The "openee" window. This is cross origin with the "opener".
|
||||
const openee_report_token= token();
|
||||
const openee_token = token();
|
||||
const openee_url = same_origin + executor_path + `&uuid=${openee_token}`;
|
||||
|
||||
// 1. Create the opener window.
|
||||
let opener_window_proxy = window.open(opener_url);
|
||||
t.add_cleanup(() => send(opener_token, "window.close()"));
|
||||
|
||||
// 2. The opener opens its openee.
|
||||
send(opener_token, `
|
||||
let openee = window.open("${openee_url}");
|
||||
send("${this_window_token}", "ACK 1");
|
||||
`);
|
||||
assert_equals("ACK 1", await receive(this_window_token));
|
||||
t.add_cleanup(() => send(openee_token, "window.close()"));
|
||||
|
||||
// 3. The openee tries to access its opener.
|
||||
send(openee_token, `
|
||||
try {opener.blur()} catch(e) {}
|
||||
`);
|
||||
|
||||
// 4. Check a report is sent to the opener.
|
||||
let report = await receiveReport(opener_report_token, "access-to-coop-page")
|
||||
assert_not_equals(report, "timeout", "Report not received");
|
||||
assert_equals(report.type, "coop");
|
||||
assert_equals(report.url, openee_url.replace(/"/g, '%22'));
|
||||
assert_equals(report.body["violation-type"], "access-to-coop-page");
|
||||
assert_equals(report.body["disposition"], "enforce");
|
||||
assert_equals(report.body["effective-policy"], "same-origin-plus-coep");
|
||||
assert_equals(report.body["property"], "blur");
|
||||
assert_equals(report.body["source-file"], undefined);
|
||||
assert_equals(report.body["lineno"], undefined);
|
||||
assert_equals(report.body["colno"], undefined);
|
||||
// TODO(arthursonzogni): Check the window-blocked-url.
|
||||
}, "Opener (COOP+COEP) accessed by cross origin openee");
|
||||
|
||||
</script>
|
|
@ -30,6 +30,20 @@ const receive = async function(uuid) {
|
|||
return "timeout";
|
||||
}
|
||||
|
||||
const receiveReport = async function(uuid, type) {
|
||||
while(true) {
|
||||
let reports = await receive(uuid);
|
||||
if (reports == "timeout")
|
||||
return "timeout";
|
||||
reports = JSON.parse(reports);
|
||||
|
||||
for(report of reports) {
|
||||
if (report?.["body"]?.["violation-type"] == type)
|
||||
return report;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Build a set of headers to tests the reporting API. This defines a set of
|
||||
// matching 'Report-To', 'Cross-Origin-Opener-Policy' and
|
||||
// 'Cross-Origin-Opener-Policy-Report-Only' headers.
|
||||
|
|
|
@ -175,6 +175,10 @@ testText("<canvas>abc", "", "<canvas> contents ignored");
|
|||
testText("<canvas><div id='target'>abc", "abc", "<canvas><div id='target'> contents ok for element not being rendered");
|
||||
testText("<img alt='abc'>", "", "<img> alt text ignored");
|
||||
testText("<img src='about:blank' class='poke'>", "", "<img> contents ignored");
|
||||
testText("<div><svg><text>abc</text></svg></div>", "abc", "<svg> text contents preserved");
|
||||
testText("<div><svg><defs><text>abc</text></defs></svg></div>", "", "<svg><defs> text contents ignored");
|
||||
testText("<div><svg><stop>abc</stop></svg></div>", "", "<svg> non-rendered text ignored");
|
||||
testText("<svg><foreignObject><span id='target'>abc</span></foreignObject></svg>", "abc", "<foreignObject> contents preserved");
|
||||
|
||||
/**** <select>, <optgroup> & <option> ****/
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
import { b } from "./nested-imports-b.js";
|
|
@ -0,0 +1,2 @@
|
|||
import { c } from "./nested-imports-c.js";
|
||||
export const b = "b";
|
|
@ -0,0 +1,2 @@
|
|||
import { d } from "./nested-imports-d.js";
|
||||
export const c = "c";
|
|
@ -0,0 +1,3 @@
|
|||
import { e } from "./nested-imports-e.js";
|
||||
import "./resources/delayed-modulescript.py";
|
||||
export const d = "d";
|
|
@ -0,0 +1,2 @@
|
|||
import { f } from "./nested-imports-f.js";
|
||||
export const e = "e";
|
|
@ -0,0 +1,2 @@
|
|||
import { g } from "./nested-imports-g.js";
|
||||
export const f = "f";
|
|
@ -0,0 +1,2 @@
|
|||
import { h } from "./nested-imports-h.js";
|
||||
export const g = "g";
|
|
@ -0,0 +1,2 @@
|
|||
import { c } from "./nested-imports-c.js";
|
||||
export const h = "h";
|
|
@ -0,0 +1,29 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Test imports under more than 3 levels in different modules</title>
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
setup({ allow_uncaught_exception: true });
|
||||
|
||||
window.log = [];
|
||||
|
||||
const test_load = async_test("should load all modules successfully");
|
||||
window.addEventListener(
|
||||
"load",
|
||||
test_load.step_func_done((ev) => {
|
||||
assert_equals(log.length, 2);
|
||||
|
||||
assert_equals(log[0], 1);
|
||||
assert_equals(log[1], 2);
|
||||
})
|
||||
);
|
||||
|
||||
function unreachable() {
|
||||
log.push("unexpected");
|
||||
}
|
||||
</script>
|
||||
<script type="module" src="./nested-imports-a.js" onerror="unreachable()"
|
||||
onload="log.push(1)"></script>
|
||||
<script type="module" src="./nested-imports-e.js" onerror="unreachable()"
|
||||
onload="log.push(2)"></script>
|
|
@ -0,0 +1,41 @@
|
|||
<!DOCTYPE HTML>
|
||||
<meta charset=utf-8>
|
||||
<title>Largest Contentful Paint: largest image is reported.</title>
|
||||
<body>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/largest-contentful-paint-helpers.js"></script>
|
||||
<img id="target"/>
|
||||
<img id="target2"/>
|
||||
<script>
|
||||
const numInitial = 100;
|
||||
const sleep = 1000;
|
||||
const small_img_src = '/images/green-16x16.png';
|
||||
let beforeLoad;
|
||||
async_test(function (t) {
|
||||
assert_implements(window.LargestContentfulPaint, "LargestContentfulPaint is not implemented");
|
||||
const img_src = '/element-timing/resources/progressive-image.py?name=square20.jpg&numInitial='
|
||||
+ numInitial + '&sleep=' + sleep;
|
||||
const img1 = document.getElementById('target')
|
||||
img1.src = img_src;
|
||||
// After a brief wait, remove the image and add a smaller image to target2.
|
||||
t.step_timeout(() => {
|
||||
img1.parentNode.removeChild(img1);
|
||||
document.getElementById('target2').src = small_img_src;
|
||||
beforeLoad = performance.now();
|
||||
}, 0);
|
||||
new PerformanceObserver(
|
||||
t.step_func(entryList => {
|
||||
let images = entryList.getEntries().filter(e => e.id !== '');
|
||||
if (!images.length)
|
||||
return;
|
||||
assert_equals(images.length, 1, 'Should only receive one entry');
|
||||
const entry = images[0];
|
||||
checkImage(images[0], window.location.origin + small_img_src, 'target2', 16 * 16,
|
||||
beforeLoad);
|
||||
t.done();
|
||||
})
|
||||
).observe({type: 'largest-contentful-paint', buffered: true});
|
||||
}, 'Largest Contentful Paint: image removed before loaded does not produce entry.');
|
||||
</script>
|
||||
</body>
|
|
@ -47,7 +47,13 @@
|
|||
let reference = document.getElementById(`${element.getAttribute("data-reference")}`);
|
||||
forceNumberOfChildren(element, reference.children.length);
|
||||
const epsilon = 1;
|
||||
compareLayout(element, reference, epsilon);
|
||||
if (element.tagName == "mspace") {
|
||||
compareSize(element, reference, epsilon);
|
||||
childrenHaveEmptyBoundingClientRects(element);
|
||||
childrenHaveEmptyBoundingClientRects(reference);
|
||||
} else {
|
||||
compareLayout(element, reference, epsilon);
|
||||
}
|
||||
}, `${element.getAttribute("data-title")}`);
|
||||
});
|
||||
done();
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
function generateMathForTag(tag, childCount) {
|
||||
let math = FragmentHelper.createElement("math");
|
||||
let element = FragmentHelper.createElement(tag);
|
||||
// Add the children with sizes of different sizes at odd positions and OOF
|
||||
// Add the children with different sizes at odd positions and OOF
|
||||
// mrow at even position.
|
||||
for (let i = 0; i < childCount; i++) {
|
||||
if (i % 2) {
|
||||
|
@ -80,10 +80,17 @@
|
|||
container.getBoundingClientRect();
|
||||
|
||||
let appendCount = appendChildrenTag.children.length;
|
||||
compareLayout(appendChildrenTag, referenceDiv.children[appendCount].firstElementChild, epsilon, `appending ${appendCount}-th child`);
|
||||
|
||||
let removeCount = removeChildrenTag.children.length;
|
||||
compareLayout(removeChildrenTag, referenceDiv.children[removeCount].firstElementChild, epsilon, `removing ${appendCount + 1}-th child`);
|
||||
if (tag == "mspace") {
|
||||
compareSize(appendChildrenTag, referenceDiv.children[appendCount].firstElementChild, epsilon);
|
||||
childrenHaveEmptyBoundingClientRects(appendChildrenTag);
|
||||
childrenHaveEmptyBoundingClientRects(referenceDiv.children[appendCount].firstElementChild);
|
||||
childrenHaveEmptyBoundingClientRects(removeChildrenTag);
|
||||
childrenHaveEmptyBoundingClientRects(referenceDiv.children[removeCount].firstElementChild);
|
||||
} else {
|
||||
compareLayout(appendChildrenTag, referenceDiv.children[appendCount].firstElementChild, epsilon, `appending ${appendCount}-th child`);
|
||||
compareLayout(removeChildrenTag, referenceDiv.children[removeCount].firstElementChild, epsilon, `removing ${appendCount + 1}-th child`);
|
||||
}
|
||||
}
|
||||
|
||||
// Hide back the div after successful testing.
|
||||
|
|
|
@ -37,6 +37,13 @@ function compareSize(element, reference, epsilon) {
|
|||
}
|
||||
}
|
||||
|
||||
function childrenHaveEmptyBoundingClientRects(element) {
|
||||
Array.from(element.children).forEach(child => {
|
||||
var childBox = child.getBoundingClientRect();
|
||||
assert_true(childBox.left == 0 && childBox.right == 0 && childBox.top == 0 && childBox.bottom == 0);
|
||||
})
|
||||
}
|
||||
|
||||
function participateToParentLayout(child) {
|
||||
var style = window.getComputedStyle(child);
|
||||
return style.getPropertyValue("display") !== "none" &&
|
||||
|
|
|
@ -37,15 +37,16 @@ async function verify_does_not_exist_in_data_uri_iframe(
|
|||
}
|
||||
|
||||
// |kSandboxWindowUrl| sends two messages to this window. The first is the
|
||||
// result of chooseFileSystemEntries(). The second is the result of
|
||||
// result of showDirectoryPicker(). The second is the result of
|
||||
// getOriginPrivateDirectory(). For windows using sandbox='allow-scripts',
|
||||
// both results must produce rejected promises.
|
||||
async function verify_results_from_sandboxed_child_window(test) {
|
||||
const event_watcher = new EventWatcher(test, self, 'message');
|
||||
|
||||
const first_message_event = await event_watcher.wait_for('message');
|
||||
assert_equals(first_message_event.data,
|
||||
'chooseFileSystemEntries(): REJECTED: SecurityError');
|
||||
assert_equals(
|
||||
first_message_event.data,
|
||||
'showDirectoryPicker(): REJECTED: SecurityError');
|
||||
|
||||
const second_message_event = await event_watcher.wait_for('message');
|
||||
assert_equals(second_message_event.data,
|
||||
|
@ -53,30 +54,33 @@ async function verify_results_from_sandboxed_child_window(test) {
|
|||
}
|
||||
|
||||
promise_test(async test => {
|
||||
await verify_does_not_exist_in_data_uri_iframe(
|
||||
test, 'chooseFileSystemEntries');
|
||||
}, 'chooseFileSystemEntries() must be undefined for data URI iframes.');
|
||||
await verify_does_not_exist_in_data_uri_iframe(test, 'showDirectoryPicker');
|
||||
}, 'showDirectoryPicker() must be undefined for data URI iframes.');
|
||||
|
||||
promise_test(async test => {
|
||||
await verify_does_not_exist_in_data_uri_iframe(
|
||||
test, 'FileSystemDirectoryHandle');
|
||||
}, 'FileSystemDirectoryHandle must be undefined for data URI iframes.');
|
||||
|
||||
promise_test(async test => {
|
||||
add_iframe(test, kSandboxWindowUrl, /*sandbox=*/'allow-scripts');
|
||||
await verify_results_from_sandboxed_child_window(test);
|
||||
}, 'getOriginPrivateDirectory() and ' +
|
||||
'chooseFileSystemEntries() must reject in a sandboxed iframe.');
|
||||
promise_test(
|
||||
async test => {
|
||||
add_iframe(test, kSandboxWindowUrl, /*sandbox=*/ 'allow-scripts');
|
||||
await verify_results_from_sandboxed_child_window(test);
|
||||
},
|
||||
'getOriginPrivateDirectory() and ' +
|
||||
'showDirectoryPicker() must reject in a sandboxed iframe.');
|
||||
|
||||
promise_test(async test => {
|
||||
const child_window_url = kSandboxWindowUrl +
|
||||
'?pipe=header(Content-Security-Policy, sandbox allow-scripts)';
|
||||
promise_test(
|
||||
async test => {
|
||||
const child_window_url = kSandboxWindowUrl +
|
||||
'?pipe=header(Content-Security-Policy, sandbox allow-scripts)';
|
||||
|
||||
const child_window = window.open(child_window_url);
|
||||
test.add_cleanup(() => {
|
||||
child_window.close();
|
||||
});
|
||||
const child_window = window.open(child_window_url);
|
||||
test.add_cleanup(() => {
|
||||
child_window.close();
|
||||
});
|
||||
|
||||
await verify_results_from_sandboxed_child_window(test);
|
||||
}, 'getOriginPrivateDirectory() and '
|
||||
+ 'chooseFileSystemEntries() must reject in a sandboxed opened window.');
|
||||
await verify_results_from_sandboxed_child_window(test);
|
||||
},
|
||||
'getOriginPrivateDirectory() and ' +
|
||||
'showDirectoryPicker() must reject in a sandboxed opened window.');
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Hello World!
|
|
@ -14,11 +14,11 @@ const directory_promise = (async () => {
|
|||
|
||||
// Small delay to give chrome's test automation a chance to actually install
|
||||
// itself.
|
||||
await new Promise(resolve => step_timeout(resolve, 100))
|
||||
await new Promise(resolve => step_timeout(resolve, 100));
|
||||
|
||||
await window.test_driver.bless(
|
||||
'show a file picker.<br />Please select an empty directory');
|
||||
const entries = await self.chooseFileSystemEntries({type: 'open-directory'});
|
||||
const entries = await self.showDirectoryPicker();
|
||||
assert_true(entries instanceof FileSystemHandle);
|
||||
assert_true(entries instanceof FileSystemDirectoryHandle);
|
||||
for await (const entry of entries.getEntries()) {
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
'use strict'
|
||||
|
||||
// Sends two messages to its creator:
|
||||
// (1) The result of chooseFileSystemEntries().
|
||||
// (1) The result of showDirectoryPicker().
|
||||
// (2) The result of getOriginPrivateDirectory().
|
||||
|
||||
function post_message(data) {
|
||||
|
@ -16,14 +16,14 @@
|
|||
}
|
||||
|
||||
try {
|
||||
window.chooseFileSystemEntries({ type: 'open-directory' })
|
||||
window.showDirectoryPicker()
|
||||
.then(() => {
|
||||
post_message('chooseFileSystemEntries(): FULFILLED');
|
||||
post_message('showDirectoryPicker(): FULFILLED');
|
||||
}).catch(error => {
|
||||
post_message(`chooseFileSystemEntries(): REJECTED: ${error.name}`);
|
||||
post_message(`showDirectoryPicker(): REJECTED: ${error.name}`);
|
||||
});
|
||||
} catch (error) {
|
||||
post_message(`chooseFileSystemEntries(): EXCEPTION: ${error.name}`);
|
||||
post_message(`showDirectoryPicker(): EXCEPTION: ${error.name}`);
|
||||
}
|
||||
|
||||
try {
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="resources/test-helpers.js"></script>
|
||||
|
||||
<script>
|
||||
|
||||
promise_test(async t => {
|
||||
await new Promise(resolve => {
|
||||
window.addEventListener('DOMContentLoaded', resolve);
|
||||
});
|
||||
// Small delay to give chrome's test automation a chance to actually install
|
||||
// itself.
|
||||
await new Promise(resolve => step_timeout(resolve, 100));
|
||||
|
||||
await window.test_driver.bless(
|
||||
'show a directory picker.<br />Please select native-file-system/resources/data/');
|
||||
const dir = await self.showDirectoryPicker();
|
||||
assert_true(dir instanceof FileSystemHandle);
|
||||
assert_true(dir instanceof FileSystemDirectoryHandle);
|
||||
assert_false(dir.isFile);
|
||||
assert_true(dir.isDirectory);
|
||||
assert_equals(dir.name, 'data');
|
||||
assert_array_equals(await getSortedDirectoryEntries(dir), ['testfile.txt']);
|
||||
|
||||
promise_test(async t => {
|
||||
assert_equals(await dir.queryPermission(), 'granted');
|
||||
}, 'showDirectoryPicker returns correct permissions');
|
||||
}, 'showDirectoryPicker works');
|
||||
|
||||
</script>
|
|
@ -0,0 +1,42 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="resources/test-helpers.js"></script>
|
||||
|
||||
<script>
|
||||
|
||||
promise_test(async t => {
|
||||
await new Promise(resolve => {
|
||||
window.addEventListener('DOMContentLoaded', resolve);
|
||||
});
|
||||
// Small delay to give chrome's test automation a chance to actually install
|
||||
// itself.
|
||||
await new Promise(resolve => step_timeout(resolve, 100));
|
||||
|
||||
await window.test_driver.bless(
|
||||
'show a file picker.<br />Please select native-file-system/resources/data/testfile.txt');
|
||||
const files = await self.showOpenFilePicker({
|
||||
multiple: false, types: [
|
||||
{ description: 'Text files', accept: { ' text/plain ': ['txt'] } },
|
||||
{ description: 'Images', accept: { ' image/* ': ['jpg', 'jpeg', 'png'] } },
|
||||
],
|
||||
});
|
||||
assert_true(Array.isArray(files));
|
||||
assert_equals(files.length, 1);
|
||||
assert_true(files[0] instanceof FileSystemHandle);
|
||||
assert_true(files[0] instanceof FileSystemFileHandle);
|
||||
assert_true(files[0].isFile);
|
||||
assert_false(files[0].isDirectory);
|
||||
assert_equals(files[0].name, 'testfile.txt');
|
||||
assert_equals(await (await files[0].getFile()).text(), 'Hello World!\n');
|
||||
|
||||
promise_test(async t => {
|
||||
assert_equals(await files[0].queryPermission(), 'granted');
|
||||
}, 'showOpenFilePicker returns correct permissions');
|
||||
}, 'showOpenFilePicker works');
|
||||
|
||||
</script>
|
|
@ -0,0 +1,82 @@
|
|||
// META: script=resources/test-helpers.js
|
||||
|
||||
promise_test(async t => {
|
||||
await promise_rejects_dom(t, 'SecurityError', self.showOpenFilePicker());
|
||||
}, 'showOpenFilePicker: Showing a picker requires user activation.');
|
||||
|
||||
promise_test(async t => {
|
||||
await promise_rejects_dom(t, 'SecurityError', self.showSaveFilePicker());
|
||||
}, 'showSaveFilePicker: Showing a picker requires user activation.');
|
||||
|
||||
promise_test(async t => {
|
||||
await promise_rejects_dom(t, 'SecurityError', self.showDirectoryPicker());
|
||||
}, 'showDirectoryPicker: Showing a picker requires user activation.');
|
||||
|
||||
// TODO(mek): Add tests for cross-origin iframes, opaque origins, etc.
|
||||
|
||||
define_file_picker_error_tests('showOpenFilePicker');
|
||||
define_file_picker_error_tests('showSaveFilePicker');
|
||||
|
||||
function define_file_picker_error_tests(showPickerMethod) {
|
||||
promise_test(async t => {
|
||||
await promise_rejects_js(
|
||||
t, TypeError,
|
||||
self[showPickerMethod]({excludeAcceptAllOption: true, types: []}));
|
||||
}, showPickerMethod + ': File picker requires at least one accepted type.');
|
||||
|
||||
promise_test(async t => {
|
||||
await promise_rejects_js(
|
||||
t, TypeError,
|
||||
self[showPickerMethod]({types: [{accept: {'': ['foo']}}]}));
|
||||
await promise_rejects_js(
|
||||
t, TypeError,
|
||||
self[showPickerMethod]({types: [{accept: {' ': ['foo']}}]}));
|
||||
}, showPickerMethod + ': MIME type can\'t be an empty string.');
|
||||
|
||||
promise_test(async t => {
|
||||
await promise_rejects_js(
|
||||
t, TypeError,
|
||||
self[showPickerMethod]({types: [{accept: {'image': ['foo']}}]}));
|
||||
}, showPickerMethod + ': MIME type must have subtype.');
|
||||
|
||||
promise_test(async t => {
|
||||
await promise_rejects_js(
|
||||
t, TypeError,
|
||||
self[showPickerMethod]({types: [{accept: {' /plain': ['foo']}}]}));
|
||||
}, showPickerMethod + ': MIME type can\'t have empty type.');
|
||||
|
||||
promise_test(async t => {
|
||||
await promise_rejects_js(
|
||||
t, TypeError,
|
||||
self[showPickerMethod]({types: [{accept: {'image/ ': ['foo']}}]}));
|
||||
}, showPickerMethod + ': MIME type can\'t have empty subtype.');
|
||||
|
||||
promise_test(async t => {
|
||||
await promise_rejects_js(
|
||||
t, TypeError,
|
||||
self[showPickerMethod](
|
||||
{types: [{accept: {'text/plain;charset=utf8': ['txt']}}]}));
|
||||
}, showPickerMethod + ': MIME type can\'t have parameters.');
|
||||
|
||||
promise_test(async t => {
|
||||
await promise_rejects_js(t, TypeError, self[showPickerMethod]({
|
||||
types: [{accept: {'text>foo/plain': ['txt']}}]
|
||||
}));
|
||||
}, showPickerMethod + ': MIME type can\'t have invalid characters in type.');
|
||||
|
||||
promise_test(async t => {
|
||||
await promise_rejects_js(
|
||||
t, TypeError,
|
||||
self[showPickerMethod]({types: [{accept: {'text / plain': ['txt']}}]}));
|
||||
}, showPickerMethod + ': MIME type can\'t have whitespace in the middle.');
|
||||
|
||||
promise_test(
|
||||
async t => {
|
||||
await promise_rejects_js(
|
||||
t, TypeError,
|
||||
self[showPickerMethod](
|
||||
{types: [{accept: {'text/plain>foo': ['txt']}}]}));
|
||||
},
|
||||
showPickerMethod +
|
||||
': MIME type can\'t have invalid characters in subtype.');
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="resources/test-helpers.js"></script>
|
||||
|
||||
<script>
|
||||
|
||||
promise_test(async t => {
|
||||
await window.test_driver.bless(
|
||||
'show a file picker.<br />Please make a copy of native-file-system/resources/data/testfile.txt in a writable directory and pick that file');
|
||||
const file = await self.showSaveFilePicker({
|
||||
multiple: false, types: [
|
||||
{ description: 'Text files', accept: { 'text/plain': ['txt'] } },
|
||||
],
|
||||
});
|
||||
assert_true(file instanceof FileSystemHandle);
|
||||
assert_true(file instanceof FileSystemFileHandle);
|
||||
assert_true(file.isFile);
|
||||
assert_false(file.isDirectory);
|
||||
assert_equals(file.name, 'testfile.txt');
|
||||
assert_equals(await (await file.getFile()).text(), '',
|
||||
'showSaveFilePicker should clear contents of file');
|
||||
|
||||
promise_test(async t => {
|
||||
assert_equals(await file.queryPermission(), 'granted');
|
||||
assert_equals(await file.queryPermission({ writable: true }), 'granted');
|
||||
}, 'showSaveFilePicker returns correct permissions');
|
||||
}, 'showSaveFilePicker works');
|
||||
|
||||
</script>
|
|
@ -0,0 +1,20 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1646776">
|
||||
<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
|
||||
<link rel="author" href="https://mozilla.org" title="Mozilla">
|
||||
<link rel="stylesheet" href="data:text/css,:root{background:green}">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<body>
|
||||
<script>
|
||||
// Note that script execution waits for the stylesheet above to be loaded.
|
||||
window.t = async_test("Stylesheets that are already loaded in the document don't cause spurious error events on preloads");
|
||||
let subdoc = document.createElement("iframe");
|
||||
subdoc.srcdoc = `
|
||||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<link rel="preload" as="style" href="data:text/css,:root{background:green}" onload="parent.t.done()" onerror="parent.t.step(() => parent.assert_unreached('should not error'))">
|
||||
`;
|
||||
document.body.appendChild(subdoc);
|
||||
</script>
|
|
@ -20,8 +20,11 @@ var ScreenEnumerationTest = (() => {
|
|||
this.success_ = false;
|
||||
}
|
||||
|
||||
setIds(internalId, primaryId) {
|
||||
setInternalId(internalId) {
|
||||
this.internalId_ = internalId;
|
||||
}
|
||||
|
||||
setPrimaryId(primaryId) {
|
||||
this.primaryId_ = primaryId;
|
||||
}
|
||||
|
||||
|
|
|
@ -1209,6 +1209,10 @@ IdlArray.prototype.assert_type_is = function(value, type)
|
|||
assert_regexp_match(value, /^([\x00-\ud7ff\ue000-\uffff]|[\ud800-\udbff][\udc00-\udfff])*$/);
|
||||
return;
|
||||
|
||||
case "ArrayBufferView":
|
||||
assert_true(ArrayBuffer.isView(value));
|
||||
return;
|
||||
|
||||
case "object":
|
||||
assert_in_array(typeof value, ["object", "function"], "wrong type: not object or function");
|
||||
return;
|
||||
|
|
|
@ -13,7 +13,8 @@ The `ScreenEnumerationTest` interface is defined as:
|
|||
|
||||
class MockScreenEnumeration {
|
||||
reset(); Empties data of created mock displays.
|
||||
setId(internalId, primaryId); // Set primary screen and internal screen IDs.
|
||||
setInternalId(internalId); // Set internal screen ID.
|
||||
setPrimaryId(primaryId); // Set primary screen ID.
|
||||
setSuccess(success); // Set boolean to validate getDisplays() returned values.
|
||||
addDisplay(display); // Push display to the display vector.
|
||||
removeDisplay(id); // Remove display from the display vector.
|
||||
|
|
|
@ -17,7 +17,8 @@ screen_enumeration_test(async (t, mockScreenEnum) => {
|
|||
1.0);
|
||||
|
||||
mockScreenEnum.addDisplay(display1);
|
||||
mockScreenEnum.setIds(mockScreenEnum.displays_[0].id, mockScreenEnum.displays_[0].id);
|
||||
mockScreenEnum.setPrimaryId(mockScreenEnum.displays_[0].id);
|
||||
mockScreenEnum.setInternalId(mockScreenEnum.displays_[0].id);
|
||||
mockScreenEnum.setSuccess(true);
|
||||
|
||||
// Grant window-placement permissions for testdriver.
|
||||
|
@ -61,7 +62,8 @@ screen_enumeration_test(async (t, mockScreenEnum) => {
|
|||
mockScreenEnum.addDisplay(display1);
|
||||
mockScreenEnum.addDisplay(display2);
|
||||
mockScreenEnum.addDisplay(display3);
|
||||
mockScreenEnum.setIds(mockScreenEnum.displays_[0].id, mockScreenEnum.displays_[0].id);
|
||||
mockScreenEnum.setPrimaryId(mockScreenEnum.displays_[0].id);
|
||||
mockScreenEnum.setInternalId(mockScreenEnum.displays_[0].id);
|
||||
mockScreenEnum.setSuccess(true);
|
||||
|
||||
// Grant window-placement permissions for testdriver.
|
||||
|
|
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