mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Auto merge of #27196 - servo-wpt-sync:wpt_update_07-07-2020, r=servo-wpt-sync
Sync WPT with upstream (07-07-2020) Automated downstream sync of changes from upstream as of 07-07-2020. [no-wpt-sync] r? @servo-wpt-sync
This commit is contained in:
commit
d7b197279e
102 changed files with 1364 additions and 221 deletions
|
@ -1,4 +0,0 @@
|
||||||
[hit-test-floats-003.html]
|
|
||||||
[Miss float below something else]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-005.html]
|
||||||
|
[Miss clipped float]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[detach-abspos-before-layout.html]
|
||||||
|
[No crash or DCHECK failure]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -2,3 +2,6 @@
|
||||||
[Hit test intersecting scaled box]
|
[Hit test intersecting scaled box]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Hit test within unscaled box]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[CaretPosition-001.html]
|
|
||||||
[Element at (400, 100)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[elementsFromPoint-invalid-cases.html]
|
||||||
|
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -312,27 +312,24 @@
|
||||||
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
|
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: */* text/html]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/plain */*]
|
[<iframe>: separate response Content-Type: text/plain */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html */*]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -53,3 +53,6 @@
|
||||||
[combined text/javascript ]
|
[combined text/javascript ]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[separate text/javascript x/x]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,4 @@
|
||||||
[split-cache.tentative.html]
|
[split-cache.html]
|
||||||
[HTTP Cache - Partioning by top-level origin 1]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[HTTP Cache - Partioning by top-level origin 3]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[HTTP cache is not shared between same-site frames with cross-site top-level frames]
|
[HTTP cache is not shared between same-site frames with cross-site top-level frames]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -11,9 +11,6 @@
|
||||||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[X-Content-Type-Options%3A%20%2Cnosniff]
|
[X-Content-Type-Options%3A%20%22nosniFF%22]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Content-Type-Options%3A%20nosniff]
|
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[traverse_the_history_4.html]
|
|
||||||
[Multiple history traversals, last would be aborted]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -171,6 +171,3 @@
|
||||||
[XHTML img usemap="#hash-id"]
|
[XHTML img usemap="#hash-id"]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[HTML (standards) IMG usemap="no-hash-name"]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-1.html]
|
[iframe_sandbox_popups_escaping-1.html]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-2.html]
|
[iframe_sandbox_popups_escaping-2.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_nonescaping-1.html]
|
[iframe_sandbox_popups_nonescaping-1.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_nonescaping-2.html]
|
[iframe_sandbox_popups_nonescaping-2.html]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_nonescaping-3.html]
|
[iframe_sandbox_popups_nonescaping-3.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[form-double-submit.html]
|
|
||||||
[default submit action should supersede onclick submit()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[script-onerror-insertion-point-2.html]
|
|
||||||
expected: TIMEOUT
|
|
|
@ -1,5 +1,5 @@
|
||||||
[ignore-opens-during-unload.window.html]
|
[ignore-opens-during-unload.window.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[document.open should bail out when ignore-opens-during-unload is greater than 0 during visibilitychange event (open(parent) while unloading parent and child)]
|
[document.open should bail out when ignore-opens-during-unload is greater than 0 during visibilitychange event (open(parent) while unloading parent and child)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -3,3 +3,6 @@
|
||||||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||||
expected: TIMEOUT
|
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
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[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
|
|
||||||
|
|
|
@ -11875,7 +11875,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"cursor-auto-007.html": [
|
"cursor-auto-007.html": [
|
||||||
"6cf1495a02c42c49b1407fef0a22eb363cdf7d2b",
|
"0d355ad0d953dce9be2f42340d331f442af8fac2",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -131073,6 +131073,19 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"display-first-line-002.html": [
|
||||||
|
"fef1d0b001c3bf46d9c5eea6741dc804bd057c72",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-display/display-first-line-002-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"display-flow-root-001.html": [
|
"display-flow-root-001.html": [
|
||||||
"3d1dcb020df129dd10d66bb4b04d62c3c280cfb6",
|
"3d1dcb020df129dd10d66bb4b04d62c3c280cfb6",
|
||||||
[
|
[
|
||||||
|
@ -152678,6 +152691,32 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"clip-path-document-element-will-change.html": [
|
||||||
|
"977eaca1405449fd1f79a01e9a5a91f2bb069b60",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-masking/clip-path/reference/clip-path-document-element-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"clip-path-document-element.html": [
|
||||||
|
"56f2d5c8ebb5114fc91a87b3bb240b36957a1800",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-masking/clip-path/reference/clip-path-document-element-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"clip-path-element-userSpaceOnUse-001.html": [
|
"clip-path-element-userSpaceOnUse-001.html": [
|
||||||
"1381f53cb0c0aefc82a91a232b712d18be625b97",
|
"1381f53cb0c0aefc82a91a232b712d18be625b97",
|
||||||
[
|
[
|
||||||
|
@ -249992,7 +250031,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"get-host-info.sub.js": [
|
"get-host-info.sub.js": [
|
||||||
"1c28a7f476f67d513e4627b6133d0c2e0ffc867a",
|
"8f37d557583b99235b7a1fa903e54e96f90b9870",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"get-host-info.sub.js.headers": [
|
"get-host-info.sub.js.headers": [
|
||||||
|
@ -292194,6 +292233,10 @@
|
||||||
"135bc04d8ee5c5e29045488728cc276f24c69832",
|
"135bc04d8ee5c5e29045488728cc276f24c69832",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"display-first-line-002-ref.html": [
|
||||||
|
"e82f6153a22befdbd33e2f106e9a8258f174d571",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"display-flow-root-001-ref.html": [
|
"display-flow-root-001-ref.html": [
|
||||||
"fcb5ac277ee72f8dd4d70d66b7b6ce736225940e",
|
"fcb5ac277ee72f8dd4d70d66b7b6ce736225940e",
|
||||||
[]
|
[]
|
||||||
|
@ -302690,6 +302733,10 @@
|
||||||
"f718ea6abfbab54333ba674ff0dcd320d8672bcd",
|
"f718ea6abfbab54333ba674ff0dcd320d8672bcd",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"clip-path-document-element-ref.html": [
|
||||||
|
"4608e54b2082aef805dce8b5bbff2c2cc82c41e9",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"clip-path-ellipse-ref.html": [
|
"clip-path-ellipse-ref.html": [
|
||||||
"5adc91a5c00f27f0d3225c99a6c2534b5b868a8d",
|
"5adc91a5c00f27f0d3225c99a6c2534b5b868a8d",
|
||||||
[]
|
[]
|
||||||
|
@ -321701,7 +321748,7 @@
|
||||||
],
|
],
|
||||||
"data": {
|
"data": {
|
||||||
"README.md": [
|
"README.md": [
|
||||||
"606c67182ca35bccc65fc073d9cb8edfd2d5d17b",
|
"2ac414b280275ea7a5ad1f376b6fe65d1bb897fe",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"backcolor.js": [
|
"backcolor.js": [
|
||||||
|
@ -321721,7 +321768,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"delete.js": [
|
"delete.js": [
|
||||||
"db53a3643f600da683a1df2f49e6e55d5b1e6d3d",
|
"00b61178c74b1704cfe18c7b3f00e98937ae98b2",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"fontname.js": [
|
"fontname.js": [
|
||||||
|
@ -321741,7 +321788,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"forwarddelete.js": [
|
"forwarddelete.js": [
|
||||||
"2b8829e6721b521b19af3c71740dd5b73c84fd36",
|
"b636a95e8a0e84608620e72fb7279a62de677477",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"hilitecolor.js": [
|
"hilitecolor.js": [
|
||||||
|
@ -321769,7 +321816,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"insertlinebreak.js": [
|
"insertlinebreak.js": [
|
||||||
"540b1b1e411945cfe2a95e59ccb0d66e0a0c8750",
|
"a29862ffd360ea01901fbe9c85dc87d1fc13b67d",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"insertorderedlist.js": [
|
"insertorderedlist.js": [
|
||||||
|
@ -321777,11 +321824,11 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"insertparagraph.js": [
|
"insertparagraph.js": [
|
||||||
"fcf9e855e1c311de2cee26e6f6d117b2da5f1fb4",
|
"2ffab8fd353c7ba7a20cfa1b5e2a3a0b1ab56c9b",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"inserttext.js": [
|
"inserttext.js": [
|
||||||
"4012510fcb6389a2f17647d5febb87b012ce883f",
|
"102da09211b6de90a49cd60410f8dcec16d08bb1",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"insertunorderedlist.js": [
|
"insertunorderedlist.js": [
|
||||||
|
@ -321863,7 +321910,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"tests.js": [
|
"tests.js": [
|
||||||
"a03a68ed8dc80a94c79023247b14ad58c5f2e2d7",
|
"c18aef136b928b92ac90448a8181bc09c881d775",
|
||||||
[]
|
[]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -337958,7 +338005,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"appmanifest.idl": [
|
"appmanifest.idl": [
|
||||||
"cf30b6127682f7f7f6a380cd1abafc1b2ad2c770",
|
"926a4fc2022e71c28aa4a2ae3d1adc12104ee1ab",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"audio-output.idl": [
|
"audio-output.idl": [
|
||||||
|
@ -338101,6 +338148,14 @@
|
||||||
"b7d9c33d596c3882e14ffa2fa1dee99e087ecedf",
|
"b7d9c33d596c3882e14ffa2fa1dee99e087ecedf",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"custom-state-pseudo-class.idl": [
|
||||||
|
"8fcd287acd337664d0878aaaac46453aa54f224d",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"deprecation-reporting.idl": [
|
||||||
|
"e62711936b5ec9e6ee93e85c3e52e07462406957",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"device-memory.idl": [
|
"device-memory.idl": [
|
||||||
"f664013ddefea7bc8950f7604c06f53c1c1aac48",
|
"f664013ddefea7bc8950f7604c06f53c1c1aac48",
|
||||||
[]
|
[]
|
||||||
|
@ -338442,7 +338497,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"streams.idl": [
|
"streams.idl": [
|
||||||
"4dddbf41cbf7bca67b42f5bc6e58b0ffcd2e309c",
|
"35f558f624a83f3e2526e89b9be909a7883ecb08",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"text-detection-api.tentative.idl": [
|
"text-detection-api.tentative.idl": [
|
||||||
|
@ -349062,7 +349117,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"requirements_flake8.txt": [
|
"requirements_flake8.txt": [
|
||||||
"ae3e4f4b5a64e692fa9c2992f12dcaa0ca582cc2",
|
"f97916e03e97a742c8f8f664f8c4ac24c7e1327a",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"requirements_mypy.txt": [
|
"requirements_mypy.txt": [
|
||||||
|
@ -386128,6 +386183,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"needs-layout-transform.html": [
|
||||||
|
"8a307b3b68d216521f87698417360a5657b92d79",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"vertical-align-top-bottom-001.html": [
|
"vertical-align-top-bottom-001.html": [
|
||||||
"2e03bc0d2fbed51589545b0b62d0ccb3d161556d",
|
"2e03bc0d2fbed51589545b0b62d0ccb3d161556d",
|
||||||
[
|
[
|
||||||
|
@ -386237,6 +386299,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"detach-abspos-before-layout.html": [
|
||||||
|
"27ee59ccc5073597ccba01b83ef8a590a8f751b9",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"inline-static-position-001.html": [
|
"inline-static-position-001.html": [
|
||||||
"b627fbcab58d0a988de8ef572f64a67c2929536b",
|
"b627fbcab58d0a988de8ef572f64a67c2929536b",
|
||||||
[
|
[
|
||||||
|
@ -389700,6 +389769,20 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"display-with-float-dynamic.html": [
|
||||||
|
"7cc2fefcc42f4fc0aa7b72fabbf2fc8df6c38048",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"display-with-float.html": [
|
||||||
|
"49f94799d93b58c77289d4ac35cb8b7d3239b4fa",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"inheritance.html": [
|
"inheritance.html": [
|
||||||
"bfd072651cb6ec82cca7d9be5b6768afbc39fca0",
|
"bfd072651cb6ec82cca7d9be5b6768afbc39fca0",
|
||||||
[
|
[
|
||||||
|
@ -392833,7 +392916,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"grid-baseline-004.html": [
|
"grid-baseline-004.html": [
|
||||||
"baabc70a3f477321f76dff59cfa2e73bcff8e165",
|
"7c3e46cfdbde7c982f76526d4b98611abd311e1e",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -394027,28 +394110,28 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"grid-auto-fill-columns-001.html": [
|
"grid-auto-fill-columns-001.html": [
|
||||||
"ed32ee55d5be7f19f468e2f772f3eb2fbbb2cde5",
|
"83ab583797dceb0a78f3692999606932706be67d",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"grid-auto-fill-rows-001.html": [
|
"grid-auto-fill-rows-001.html": [
|
||||||
"afce3f5fa91a609f5a4f27f666e97565f4fbc8ee",
|
"d3078b7b3ad9ac633de08c4db0e66e784976db6b",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"grid-auto-fit-columns-001.html": [
|
"grid-auto-fit-columns-001.html": [
|
||||||
"b1dab7e32f9dd98f14af9ff885cc688b465ed384",
|
"524bb209a569f066e994cfe3174ac9f2d2fd743a",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"grid-auto-fit-rows-001.html": [
|
"grid-auto-fit-rows-001.html": [
|
||||||
"7619d9e023e2a7cbc9e7d5fb5d49730046bfbcf3",
|
"fef304b2188c07a69c9dd5d07dbb316dc1a18b8e",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -394216,7 +394299,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"grid-support-grid-template-areas-001.html": [
|
"grid-support-grid-template-areas-001.html": [
|
||||||
"da29040b31b9780b34345a0173a4b7db5159a2df",
|
"ed4c500a1986008033acd16c435c75f02ba8751e",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -394684,7 +394767,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"flex-and-intrinsic-sizes-001.html": [
|
"flex-and-intrinsic-sizes-001.html": [
|
||||||
"5144450dd8cb6106768d55088bd4900405be05ce",
|
"02e34071ec4d0f43378f17c3a2255295f267ac88",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -394788,6 +394871,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"grid-flex-track-intrinsic-sizes-003.html": [
|
||||||
|
"81a5d14131078c214b59f236838043870dda2512",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"grid-intrinsic-size-with-orthogonal-items.html": [
|
"grid-intrinsic-size-with-orthogonal-items.html": [
|
||||||
"4dfcd126d10e86bb9b2d2bb6bfc1f668f839c9ba",
|
"4dfcd126d10e86bb9b2d2bb6bfc1f668f839c9ba",
|
||||||
[
|
[
|
||||||
|
@ -407910,6 +408000,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"rem-unit-root-element.html": [
|
||||||
|
"cfd7af17c4f0463e3df02b8d91a1f96c70511408",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"rgba-011.html": [
|
"rgba-011.html": [
|
||||||
"84c317033063b72716e36cfd15466780e010ba11",
|
"84c317033063b72716e36cfd15466780e010ba11",
|
||||||
[
|
[
|
||||||
|
@ -412558,6 +412655,26 @@
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"custom-state-pseudo-class": {
|
||||||
|
"idlharness.window.js": [
|
||||||
|
"7ddbe315a60f3f448bb6fe2f1bf071afb8464fe6",
|
||||||
|
[
|
||||||
|
"custom-state-pseudo-class/idlharness.window.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/resources/WebIDLParser.js"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/resources/idlharness.js"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
"delegated-ink": {
|
"delegated-ink": {
|
||||||
"exception-thrown-bad-color.tentative.html": [
|
"exception-thrown-bad-color.tentative.html": [
|
||||||
"24e54c50bae567c3f1690378d1d62e8b68290e5e",
|
"24e54c50bae567c3f1690378d1d62e8b68290e5e",
|
||||||
|
@ -412592,6 +412709,41 @@
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"deprecation-reporting": {
|
||||||
|
"idlharness.any.js": [
|
||||||
|
"720bacfa3ff3f00e2b8dcc4e061924d2dc48e876",
|
||||||
|
[
|
||||||
|
"deprecation-reporting/idlharness.any.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/resources/WebIDLParser.js"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/resources/idlharness.js"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"deprecation-reporting/idlharness.any.worker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/resources/WebIDLParser.js"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/resources/idlharness.js"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
"device-memory": {
|
"device-memory": {
|
||||||
"device-memory.https.any.js": [
|
"device-memory.https.any.js": [
|
||||||
"4fe6f04ebc959e6468af5296ebc677c70a7cf170",
|
"4fe6f04ebc959e6468af5296ebc677c70a7cf170",
|
||||||
|
@ -433478,7 +433630,7 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"split-cache.tentative.html": [
|
"split-cache.html": [
|
||||||
"4b04c9ff79bf951cce993c6dbcc556dc1e505c41",
|
"4b04c9ff79bf951cce993c6dbcc556dc1e505c41",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
|
@ -433967,10 +434119,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"preserve-fragment.html": [
|
"preserve-fragment.html": [
|
||||||
"72ed24c837f143191a08d6df69544c0601385863",
|
"682539a7445f2da6ec27d4b6a217d743c5c91915",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{
|
||||||
|
"timeout": "long"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -457973,6 +458127,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"flex-legend-float-abspos.html": [
|
||||||
|
"f6eead471cc076d20839a0e95be01b7742f199fa",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"legend-align-justify-self.html": [
|
"legend-align-justify-self.html": [
|
||||||
"29df29d17778a9d3d592c5e942f093a44f419b3c",
|
"29df29d17778a9d3d592c5e942f093a44f419b3c",
|
||||||
[
|
[
|
||||||
|
@ -462008,7 +462169,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"iframe-loading-lazy.tentative.html": [
|
"iframe-loading-lazy.tentative.html": [
|
||||||
"1a5f8f7407e3403888239325c0603b5ec4101ffd",
|
"51b442695e01e9496ee4f5754023f722e6636f36",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -462670,7 +462831,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"image-loading-lazy-below-viewport-dynamic.html": [
|
"image-loading-lazy-below-viewport-dynamic.html": [
|
||||||
"e27212cfd79c19c531efe44167f94a0730790a4b",
|
"7fc2c74214739206cfec69b1617d59a2f36b3b3d",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -462705,7 +462866,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"image-loading-lazy-in-viewport-dynamic.html": [
|
"image-loading-lazy-in-viewport-dynamic.html": [
|
||||||
"c9baceda5874285cd4a140786baef20598e7ee0e",
|
"982f09b8298bccee48b24c1774ef46a5d702dd22",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -462733,7 +462894,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"image-loading-lazy-multicol.html": [
|
"image-loading-lazy-multicol.html": [
|
||||||
"1458fb44b7849fed9792170638381a11a45d22ab",
|
"e906681932dbe616eb58e2f889878b2f2fdfaa4e",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -475537,6 +475698,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"default-properties-on-the-math-root.html": [
|
||||||
|
"80a09774a7777fa104c861086e0f5ac971f07f05",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"display-contents.html": [
|
"display-contents.html": [
|
||||||
"aeaa28da908816ad39619d9a47bbb43a3116bbe9",
|
"aeaa28da908816ad39619d9a47bbb43a3116bbe9",
|
||||||
[
|
[
|
||||||
|
@ -513426,7 +513594,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"request-video-frame-callback-webrtc.https.html": [
|
"request-video-frame-callback-webrtc.https.html": [
|
||||||
"b6131d6a808759346aa54b9e400e535b6c3ca29c",
|
"ce5b5ad6be699a917b3dce5559cdbfa8e334127d",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -518268,6 +518436,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"audiobuffersource-duration-loop.html": [
|
||||||
|
"faa70e11c4774991061e1d85a4a4b774e7368f5a",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"audiobuffersource-ended.html": [
|
"audiobuffersource-ended.html": [
|
||||||
"b9922f61ef399bf558a2f6d3c61154b9f14a512f",
|
"b9922f61ef399bf558a2f6d3c61154b9f14a512f",
|
||||||
[
|
[
|
||||||
|
@ -521261,10 +521436,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"RTCPeerConnection-createDataChannel.html": [
|
"RTCPeerConnection-createDataChannel.html": [
|
||||||
"3d2169dffac65ffbc81355b33c4c904bf5e3f067",
|
"87867664b58a6787bd96cfb85559b4f1171e263f",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{
|
||||||
|
"timeout": "long"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"RTCPeerConnection-createOffer.html": [
|
"RTCPeerConnection-createOffer.html": [
|
||||||
|
@ -521312,7 +521489,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"RTCPeerConnection-iceConnectionState.https.html": [
|
"RTCPeerConnection-iceConnectionState.https.html": [
|
||||||
"851ce884d6ea12bf60761ef23f78cf197d594372",
|
"d3126065b99778f32b5e313211085d55c064fe1e",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
@ -521516,10 +521693,12 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"RTCPeerConnection-setRemoteDescription-tracks.https.html": [
|
"RTCPeerConnection-setRemoteDescription-tracks.https.html": [
|
||||||
"59761c4c4bdca57141272b092fe56a917b612c7b",
|
"d2ee646e2c17c7d0aa1d632882838a07a6d5a685",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{
|
||||||
|
"timeout": "long"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"RTCPeerConnection-setRemoteDescription.html": [
|
"RTCPeerConnection-setRemoteDescription.html": [
|
||||||
|
@ -521761,14 +521940,14 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"datachannel-emptystring.html": [
|
"datachannel-emptystring.html": [
|
||||||
"6af436a1d1bd4fb0c3bb8065f48475582c87e33a",
|
"456bac7367e6f9034f83bbee6998313b789b8c0d",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"getstats.html": [
|
"getstats.html": [
|
||||||
"979e99c0b27cc39af3f3a050df16a70b8f1221e8",
|
"0950a374c3cd8a44cbb8bffc2991fc6dc95417c8",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -521841,14 +522020,14 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"no-media-call.html": [
|
"no-media-call.html": [
|
||||||
"dbe6a0dd4c210b2fe930e574fe5d638968805dca",
|
"b1eba08d0b433c60c6332199cd35294847028a0c",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"promises-call.html": [
|
"promises-call.html": [
|
||||||
"ceb6ab258ccbaaebb39b63742a48a379db35bc46",
|
"8b9a27554973531e8528406a52d38b7c55932f3c",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -521968,14 +522147,14 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"simplecall-no-ssrcs.https.html": [
|
"simplecall-no-ssrcs.https.html": [
|
||||||
"87f8d939a5a2f80fa9fae137cf34d6e99ecf391a",
|
"5160451f012e642dd5697e034a19a7f8895421ea",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"simplecall.https.html": [
|
"simplecall.https.html": [
|
||||||
"291437a526582d13db6e04fa39c152ce9ed5859a",
|
"ffe043b6a237fae1a4f70e2cfac495a2a6132c28",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[hit-test-floats-003.html]
|
|
||||||
[Miss float below something else]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-005.html]
|
||||||
|
[Miss clipped float]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[detach-abspos-before-layout.html]
|
||||||
|
[No crash or DCHECK failure]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -2,3 +2,6 @@
|
||||||
[Hit test intersecting scaled box]
|
[Hit test intersecting scaled box]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Hit test within unscaled box]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[CaretPosition-001.html]
|
|
||||||
[Element at (400, 100)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[elementsFromPoint-invalid-cases.html]
|
||||||
|
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -312,27 +312,24 @@
|
||||||
[fetch(): separate response Content-Type: text/plain ]
|
[fetch(): separate response Content-Type: text/plain ]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: */* text/html]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/plain */*]
|
[<iframe>: separate response Content-Type: text/plain */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html */*]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -53,3 +53,6 @@
|
||||||
[combined text/javascript ]
|
[combined text/javascript ]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[separate text/javascript x/x]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
7
tests/wpt/metadata/fetch/http-cache/split-cache.html.ini
Normal file
7
tests/wpt/metadata/fetch/http-cache/split-cache.html.ini
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
[split-cache.html]
|
||||||
|
[HTTP cache is not shared between same-site frames with cross-site top-level frames]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[HTTP cache is not shared between cross-site top-level frames]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -11,9 +11,6 @@
|
||||||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[X-Content-Type-Options%3A%20%2Cnosniff]
|
[X-Content-Type-Options%3A%20%22nosniFF%22]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Content-Type-Options%3A%20nosniff]
|
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[traverse_the_history_4.html]
|
|
||||||
[Multiple history traversals, last would be aborted]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
[flex-legend-float-abspos.html]
|
||||||
|
[dynamic changes to float]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[dynamic changes to position]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[inserting a new legend and removing it again]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[no dynamic changes]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -172,6 +172,3 @@
|
||||||
[XHTML img usemap="http://example.org/#garbage-before-hash-id"]
|
[XHTML img usemap="http://example.org/#garbage-before-hash-id"]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[HTML (standards) IMG usemap="no-hash-name"]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[iframe_sandbox_popups_escaping-1.html]
|
[iframe_sandbox_popups_escaping-1.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-2.html]
|
[iframe_sandbox_popups_escaping-2.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[iframe_sandbox_popups_nonescaping-1.html]
|
[iframe_sandbox_popups_nonescaping-1.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[iframe_sandbox_popups_nonescaping-2.html]
|
[iframe_sandbox_popups_nonescaping-2.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[iframe_sandbox_popups_nonescaping-3.html]
|
[iframe_sandbox_popups_nonescaping-3.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[form-double-submit.html]
|
|
||||||
[default submit action should supersede onclick submit()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[script-onerror-insertion-point-2.html]
|
|
||||||
expected: TIMEOUT
|
|
|
@ -1,5 +1,5 @@
|
||||||
[ignore-opens-during-unload.window.html]
|
[ignore-opens-during-unload.window.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[ignore-opens-during-unload]
|
[ignore-opens-during-unload]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -4,3 +4,6 @@
|
||||||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||||
expected: TIMEOUT
|
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
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[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
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ function get_host_info() {
|
||||||
var HTTP_PORT = '{{ports[http][0]}}';
|
var HTTP_PORT = '{{ports[http][0]}}';
|
||||||
var HTTP_PORT2 = '{{ports[http][1]}}';
|
var HTTP_PORT2 = '{{ports[http][1]}}';
|
||||||
var HTTPS_PORT = '{{ports[https][0]}}';
|
var HTTPS_PORT = '{{ports[https][0]}}';
|
||||||
|
var HTTPS_PORT2 = '{{ports[https][1]}}';
|
||||||
var PROTOCOL = self.location.protocol;
|
var PROTOCOL = self.location.protocol;
|
||||||
var IS_HTTPS = (PROTOCOL == "https:");
|
var IS_HTTPS = (PROTOCOL == "https:");
|
||||||
var HTTP_PORT_ELIDED = HTTP_PORT == "80" ? "" : (":" + HTTP_PORT);
|
var HTTP_PORT_ELIDED = HTTP_PORT == "80" ? "" : (":" + HTTP_PORT);
|
||||||
|
@ -22,6 +23,7 @@ function get_host_info() {
|
||||||
HTTP_PORT: HTTP_PORT,
|
HTTP_PORT: HTTP_PORT,
|
||||||
HTTP_PORT2: HTTP_PORT2,
|
HTTP_PORT2: HTTP_PORT2,
|
||||||
HTTPS_PORT: HTTPS_PORT,
|
HTTPS_PORT: HTTPS_PORT,
|
||||||
|
HTTPS_PORT2: HTTPS_PORT2,
|
||||||
ORIGINAL_HOST: ORIGINAL_HOST,
|
ORIGINAL_HOST: ORIGINAL_HOST,
|
||||||
REMOTE_HOST: REMOTE_HOST,
|
REMOTE_HOST: REMOTE_HOST,
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
<!doctype html>
|
||||||
|
<title>Reusing cached lines multiple times should not crash</title>
|
||||||
|
<link rel="author" href="mailto:kojii@chromium.org">
|
||||||
|
<link rel="help" href="https://crbug.com/1102083">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<a><object id="target"><b></b></object><br></a>
|
||||||
|
<script>
|
||||||
|
test(() => {
|
||||||
|
const target = document.getElementById('target');
|
||||||
|
target.style.setProperty('transition-delay', '9999s');
|
||||||
|
document.body.offsetWidth;
|
||||||
|
target.style.transform = 'scale(1)';
|
||||||
|
document.body.offsetHeight;
|
||||||
|
}, 'No crash');
|
||||||
|
</script>
|
|
@ -0,0 +1,31 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>Detaching positioned object before it is laid out should not crash</title>
|
||||||
|
<link rel="author" href="mailto:kojii@chromium.org">
|
||||||
|
<link rel="help" href="https://crbug.com/1101986">
|
||||||
|
<meta name="assert" content="Detaching positioned object before it is laid out should not crash">
|
||||||
|
<style>
|
||||||
|
.float {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.abs {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<body>
|
||||||
|
<div id="container">text<span id="target" class="float"></span></div>
|
||||||
|
</body>
|
||||||
|
<script>
|
||||||
|
test(() => {
|
||||||
|
document.body.offsetTop;
|
||||||
|
let target = document.getElementById('target');
|
||||||
|
|
||||||
|
// Change `#target` from floating object to positioned object.
|
||||||
|
target.classList.add('abs');
|
||||||
|
|
||||||
|
// Style recalc without layout, and detach.
|
||||||
|
getComputedStyle(target).display;
|
||||||
|
container.style.display = "none";
|
||||||
|
}, 'No crash or DCHECK failure');
|
||||||
|
</script>
|
|
@ -0,0 +1,6 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<div contenteditable></div>
|
||||||
|
<p>The word "PASS" should be seen below. There should be no DCHECK
|
||||||
|
failure.</p>
|
||||||
|
<p style="color: blue;">PASS</p>
|
|
@ -0,0 +1,28 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Display flex first line with floated first letter</title>
|
||||||
|
<link rel="help" href="https://crbug.com/1097595">
|
||||||
|
<link rel="match" href="display-first-line-002-ref.html">
|
||||||
|
<style id="styleElm">
|
||||||
|
#victim::first-line { display:flex; }
|
||||||
|
#victim::first-letter { float:right; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- The contenteditable DIV is just here to trigger legacy layout
|
||||||
|
fallback, and a DCHECK failure identical to the one in the bug
|
||||||
|
report. If we remove it, we'll get NG layout, and then it will
|
||||||
|
actually DCHECK-fail inside NG inline layout code instead. -->
|
||||||
|
<div contenteditable></div>
|
||||||
|
|
||||||
|
<p>The word "PASS" should be seen below. There should be no DCHECK
|
||||||
|
failure.</p>
|
||||||
|
<div id="child" style="display:none;"></div>
|
||||||
|
<div id="victim" style="width:fit-content;">
|
||||||
|
SPAS
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
document.body.offsetTop;
|
||||||
|
styleElm.appendChild(child);
|
||||||
|
document.body.offsetTop;
|
||||||
|
victim.style.color = "blue";
|
||||||
|
</script>
|
|
@ -0,0 +1,40 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Computed float value of flex/grid items</title>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-containers">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#grid-containers">
|
||||||
|
<meta name="assert" content="computed float value of flex/grid items should be as specified">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
|
||||||
|
<div id="flex" style="display:flex;">
|
||||||
|
<div id="flex-item"></div>
|
||||||
|
</div>
|
||||||
|
<div id="grid" style="display:grid;">
|
||||||
|
<div id="grid-item">
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
function setFloatFor(id, float) {
|
||||||
|
document.getElementById(id).style.cssFloat = float;
|
||||||
|
}
|
||||||
|
function getFloatFor(id) {
|
||||||
|
return window.getComputedStyle(document.getElementById(id)).getPropertyValue("float");
|
||||||
|
}
|
||||||
|
function setDisplayBlock(id) {
|
||||||
|
document.getElementById(id).style.display = "block";
|
||||||
|
}
|
||||||
|
test(function() {
|
||||||
|
assert_equals(getFloatFor("flex-item"), "none");
|
||||||
|
assert_equals(getFloatFor("grid-item"), "none");
|
||||||
|
|
||||||
|
setFloatFor("flex-item", "left");
|
||||||
|
setFloatFor("grid-item", "right");
|
||||||
|
assert_equals(getFloatFor("flex-item"), "left");
|
||||||
|
assert_equals(getFloatFor("grid-item"), "right");
|
||||||
|
|
||||||
|
setDisplayBlock("grid");
|
||||||
|
setDisplayBlock("flex");
|
||||||
|
assert_equals(getFloatFor("flex-item"), "left");
|
||||||
|
assert_equals(getFloatFor("grid-item"), "right");
|
||||||
|
}, "computed style for float");
|
||||||
|
</script>
|
|
@ -0,0 +1,24 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Computed float value of flex/grid items</title>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-containers">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#grid-containers">
|
||||||
|
<meta name="assert" content="computed float value of flex/grid items should be as specified">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
|
||||||
|
<div style="display:flex;">
|
||||||
|
<div id="flex-item" style="float:left;"></div>
|
||||||
|
</div>
|
||||||
|
<div style="display:grid;">
|
||||||
|
<div id="grid-item" style="float:right;"></div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
function getFloatFor(id) {
|
||||||
|
return window.getComputedStyle(document.getElementById(id)).getPropertyValue("float");
|
||||||
|
}
|
||||||
|
test(function() {
|
||||||
|
assert_equals(getFloatFor("flex-item"), "left");
|
||||||
|
assert_equals(getFloatFor("grid-item"), "right");
|
||||||
|
}, "computed style for float");
|
||||||
|
</script>
|
|
@ -35,9 +35,17 @@ body { margin: 0; }
|
||||||
}
|
}
|
||||||
.item {
|
.item {
|
||||||
height: 25px;
|
height: 25px;
|
||||||
border-color: black;
|
border-color: gray;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
}
|
}
|
||||||
|
.grid.grid > * {
|
||||||
|
background: silver;
|
||||||
|
background: rgba(0,0,0,0.3);
|
||||||
|
}
|
||||||
|
.target.target {
|
||||||
|
background: blue;
|
||||||
|
border-color: navy;
|
||||||
|
}
|
||||||
.style1 {
|
.style1 {
|
||||||
border-width: 5px 0px 10px;
|
border-width: 5px 0px 10px;
|
||||||
padding: 10px 0px 20px;
|
padding: 10px 0px 20px;
|
||||||
|
@ -79,124 +87,134 @@ body { margin: 0; }
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
This case shows 3 items located along the first row and in different columns, so grid baseline is computed using the one located at first column (blue item).
|
This case shows 3 items located along the first row and in different columns.
|
||||||
|
The grid baseline is computed using the one located at first column (blue item)
|
||||||
|
regardless of source order.
|
||||||
</p>
|
</p>
|
||||||
<div class="container" data-expected-width="480" data-expected-height="120">
|
<div class="container" data-expected-width="480" data-expected-height="120">
|
||||||
<div class="grid" data-offset-x="0" data-offset-y="20">
|
<div class="grid" data-offset-x="0" data-offset-y="20">
|
||||||
<div class="item style1 firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
<div class="item style1 firstRowFirstColumn target" data-offset-x="0" data-offset-y="0"></div>
|
||||||
<div class="item style2 firstRowSecondColumn" data-offset-x="50" data-offset-y="10"></div>
|
<div class="item style2 firstRowSecondColumn" data-offset-x="50" data-offset-y="10"></div>
|
||||||
<div class="item style3 firstRowThirdColumn" data-offset-x="100" data-offset-y="20"></div>
|
<div class="item style3 firstRowThirdColumn" data-offset-x="100" data-offset-y="20"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid" data-offset-x="160" data-offset-y="10">
|
<div class="grid" data-offset-x="160" data-offset-y="10">
|
||||||
<div class="item style1 firstRowThirdColumn" data-offset-x="100" data-offset-y="0"></div>
|
<div class="item style1 firstRowThirdColumn" data-offset-x="100" data-offset-y="0"></div>
|
||||||
<div class="item style2 firstRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
|
<div class="item style2 firstRowFirstColumn target" data-offset-x="0" data-offset-y="10"></div>
|
||||||
<div class="item style3 firstRowSecondColumn" data-offset-x="50" data-offset-y="20"></div>
|
<div class="item style3 firstRowSecondColumn" data-offset-x="50" data-offset-y="20"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid" data-offset-x="320" data-offset-y="0">
|
<div class="grid" data-offset-x="320" data-offset-y="0">
|
||||||
<div class="item style1 firstRowSecondColumn" data-offset-x="50" data-offset-y="0"></div>
|
<div class="item style1 firstRowSecondColumn" data-offset-x="50" data-offset-y="0"></div>
|
||||||
<div class="item style2 firstRowThirdColumn" data-offset-x="100" data-offset-y="10"></div>
|
<div class="item style2 firstRowThirdColumn" data-offset-x="100" data-offset-y="10"></div>
|
||||||
<div class="item style3 firstRowFirstColumn" data-offset-x="0" data-offset-y="20"></div>
|
<div class="item style3 firstRowFirstColumn target" data-offset-x="0" data-offset-y="20"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
This case shows 3 items located along the first row and in different columns, so such item is used to determine the grid's baseline instead of using the grid order.
|
This case shows 3 items located along the first row and in different columns.
|
||||||
|
The baseline-aligned item (blue) always determines the grid baseline.
|
||||||
</p>
|
</p>
|
||||||
<div class="container" data-expected-width="480" data-expected-height="120">
|
<div class="container" data-expected-width="480" data-expected-height="120">
|
||||||
<div class="grid" data-offset-x="0" data-offset-y="0">
|
<div class="grid" data-offset-x="0" data-offset-y="0">
|
||||||
<div class="item style1 firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
<div class="item style1 firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
||||||
<div class="item style2 firstRowSecondColumn" data-offset-x="50" data-offset-y="10"></div>
|
<div class="item style2 firstRowSecondColumn" data-offset-x="50" data-offset-y="10"></div>
|
||||||
<div class="item style3 firstRowThirdColumn alignSelfBaseline" data-offset-x="100" data-offset-y="20"></div>
|
<div class="item style3 firstRowThirdColumn alignSelfBaseline target" data-offset-x="100" data-offset-y="20"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid" data-offset-x="160" data-offset-y="0">
|
<div class="grid" data-offset-x="160" data-offset-y="0">
|
||||||
<div class="item style1 firstRowThirdColumn" data-offset-x="100" data-offset-y="0"></div>
|
<div class="item style1 firstRowThirdColumn" data-offset-x="100" data-offset-y="0"></div>
|
||||||
<div class="item style2 firstRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
|
<div class="item style2 firstRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
|
||||||
<div class="item style3 firstRowSecondColumn alignSelfBaseline" data-offset-x="50" data-offset-y="20"></div>
|
<div class="item style3 firstRowSecondColumn alignSelfBaseline target" data-offset-x="50" data-offset-y="20"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid" data-offset-x="320" data-offset-y="20">
|
<div class="grid" data-offset-x="320" data-offset-y="20">
|
||||||
<div class="item style1 firstRowSecondColumn alignSelfBaseline" data-offset-x="50" data-offset-y="0"></div>
|
<div class="item style1 firstRowSecondColumn alignSelfBaseline target" data-offset-x="50" data-offset-y="0"></div>
|
||||||
<div class="item style2 firstRowThirdColumn" data-offset-x="100" data-offset-y="10"></div>
|
<div class="item style2 firstRowThirdColumn" data-offset-x="100" data-offset-y="10"></div>
|
||||||
<div class="item style3 firstRowFirstColumn" data-offset-x="0" data-offset-y="20"></div>
|
<div class="item style3 firstRowFirstColumn" data-offset-x="0" data-offset-y="20"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
This case shows 3 items' areas intersecting the first row and first column, so the dom order must be used to determine each grid's baseline.
|
This case shows 3 items' areas intersecting the first row and first column,
|
||||||
|
but none of them participate in baseline alignment in the first row,
|
||||||
|
so the dom order must be used to determine each grid's baseline.
|
||||||
</p>
|
</p>
|
||||||
<div class="container" data-expected-width="480" data-expected-height="165">
|
<div class="container" data-expected-width="480" data-expected-height="165">
|
||||||
<div class="grid twoRows" data-offset-x="0" data-offset-y="40">
|
<div class="grid twoRows" data-offset-x="0" data-offset-y="40">
|
||||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
<div class="firstRowFirstColumn target" data-offset-x="0" data-offset-y="0"></div>
|
||||||
<div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
|
<div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
|
||||||
<div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
|
<div class="bothRowFirstColumn style2" style="align-self: last baseline" data-offset-x="0"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid twoRows" data-offset-x="160" data-offset-y="0">
|
<div class="grid twoRows" data-offset-x="160" data-offset-y="0">
|
||||||
<div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
|
<div class="bothRowFirstColumn target" data-offset-x="0" data-offset-y="10"></div>
|
||||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
||||||
<div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
|
<div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid twoRows" data-offset-x="320" data-offset-y="55">
|
<div class="grid twoRows" data-offset-x="320" data-offset-y="55">
|
||||||
<div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
|
<div class="firstRowBothColumn target" data-offset-x="0" data-offset-y="15"></div>
|
||||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
||||||
<div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
|
<div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
This case shows 3 items' areas intersecting the first row and first column, but one of the items participates in baseline alignment, so such item is used to determine the grid's baseline instead of using the dom order.
|
This case shows 3 items' areas intersecting the first row and first column,
|
||||||
|
but one of the items participates in baseline alignment in the first row,
|
||||||
|
so such item is used to determine the grid's baseline
|
||||||
|
instead of using the dom order.
|
||||||
</p>
|
</p>
|
||||||
<div class="container" data-expected-width="480" data-expected-height="165">
|
<div class="container" data-expected-width="480" data-expected-height="165">
|
||||||
<div class="grid twoRows" data-offset-x="0" data-offset-y="55">
|
<div class="grid twoRows" data-offset-x="0" data-offset-y="55">
|
||||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
||||||
<div class="firstRowBothColumn alignSelfBaseline" style="width: 100px; height: 20px;" data-offset-x="0" data-offset-y="15"></div>
|
<div class="firstRowBothColumn alignSelfBaseline target" style="width: 100px; height: 20px;" data-offset-x="0" data-offset-y="15"></div>
|
||||||
<div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
|
<div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid twoRows" data-offset-x="160" data-offset-y="40">
|
<div class="grid twoRows" data-offset-x="160" data-offset-y="40">
|
||||||
<div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
|
<div class="bothRowFirstColumn style2" style="align-self: last baseline" data-offset-x="0"></div>
|
||||||
<div class="firstRowFirstColumn alignSelfBaseline" style="width: 50px; height: 50px;" data-offset-x="0" data-offset-y="0"></div>
|
<div class="firstRowFirstColumn alignSelfBaseline target" style="width: 50px; height: 50px;" data-offset-x="0" data-offset-y="0"></div>
|
||||||
<div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
|
<div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid twoRows" data-offset-x="320" data-offset-y="0">
|
<div class="grid twoRows" data-offset-x="320" data-offset-y="0">
|
||||||
<div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
|
<div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
|
||||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
||||||
<div class="bothRowFirstColumn alignSelfBaseline" style="width: 40px; height: 80px;" data-offset-x="0" data-offset-y="10"></div>
|
<div class="bothRowFirstColumn alignSelfBaseline target" style="width: 40px; height: 80px;" data-offset-x="0" data-offset-y="10"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
This case shows one of the grids with no items, hence its baseline must be synthesized.
|
This case shows one of the grids with no items,
|
||||||
|
hence its baseline must be synthesized from its margin box.
|
||||||
</p>
|
</p>
|
||||||
<div class="container" data-expected-width="480" data-expected-height="250">
|
<div class="container" data-expected-width="480" data-expected-height="250">
|
||||||
<div class="grid twoRows" data-offset-x="0" data-offset-y="140">
|
<div class="grid twoRows" data-offset-x="0" data-offset-y="140">
|
||||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
<div class="firstRowFirstColumn target" data-offset-x="0" data-offset-y="0"></div>
|
||||||
<div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
|
<div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
|
||||||
<div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
|
<div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid twoRows" data-offset-x="160" data-offset-y="100">
|
<div class="grid twoRows" data-offset-x="160" data-offset-y="100">
|
||||||
<div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
|
<div class="bothRowFirstColumn target" data-offset-x="0" data-offset-y="10"></div>
|
||||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
||||||
<div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
|
<div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid empty twoRows" data-offset-x="320" data-offset-y="15">
|
<div class="grid empty twoRows target" data-offset-x="320" data-offset-y="15">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
This case shows one of the grids with no items in the first row, hence its baseline must be synthesized.
|
This case shows two of the grids with no items in their first row,
|
||||||
|
hence the items in the second row are evaluated.
|
||||||
</p>
|
</p>
|
||||||
<div class="container" data-expected-width="480" data-expected-height="300">
|
<div class="container" data-expected-width="480" data-expected-height="250">
|
||||||
<div class="grid twoRows" data-offset-x="0" data-offset-y="190">
|
<div id=first class="grid twoRows" data-offset-x="0" data-offset-y="80">
|
||||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
<div class="firstRowFirstColumn target" data-offset-x="0" data-offset-y="0"></div>
|
||||||
<div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
|
<div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
|
||||||
<div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
|
<div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid twoRows" data-offset-x="160" data-offset-y="150">
|
<div id=second class="grid threeRows" data-offset-x="160" data-offset-y="55">
|
||||||
<div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
|
<div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="100"></div>
|
||||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
|
<div class="secondRowBothColumn" data-offset-x="0" data-offset-y="65"></div>
|
||||||
<div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
|
<div class="secondRowSecondColumn style3 alignSelfBaseline target" id="first" data-offset-x="0" data-offset-y="80"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid empty threeRows" data-offset-x="320" data-offset-y="15">
|
<div class="grid empty threeRows" data-offset-x="320" data-offset-y="15">
|
||||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="60"></div>
|
|
||||||
<div class="thirdRowSecondColumn" data-offset-x="50" data-offset-y="110"></div>
|
<div class="thirdRowSecondColumn" data-offset-x="50" data-offset-y="110"></div>
|
||||||
|
<div class="secondRowFirstColumn target" data-offset-x="0" data-offset-y="60"></div>
|
||||||
<div class="secondRowBothColumn" data-offset-x="0" data-offset-y="75"></div>
|
<div class="secondRowBothColumn" data-offset-x="0" data-offset-y="75"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -23,13 +23,16 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.gridOnlyAutoRepeat { grid-template-columns: repeat(auto-fill, 30px [autobar]); }
|
.gridOnlyAutoRepeat { grid-template-columns: repeat(auto-fill, 30px [autobar]); }
|
||||||
|
.gridMinMaxAutoRepeat { grid-template-columns: repeat(auto-fill, minmax(13px, 30px)); }
|
||||||
|
.gridMaxMinAutoRepeat { grid-template-columns: repeat(auto-fill, minmax(30px, 13px)); }
|
||||||
|
.gridMaxMinPercentAutoRepeat { grid-template-columns: repeat(auto-fill, minmax(30px, 6.5%)); }
|
||||||
.gridAutoRepeatAndFixedBefore { grid-template-columns: 10px [foo] 20% [bar] repeat(auto-fill, [autofoo] 35px); }
|
.gridAutoRepeatAndFixedBefore { grid-template-columns: 10px [foo] 20% [bar] repeat(auto-fill, [autofoo] 35px); }
|
||||||
.gridAutoRepeatAndFixedAfter { grid-template-columns: repeat(auto-fill, [first] 30px [last]) [foo] minmax(60px, 80px) [bar] minmax(45px, max-content); }
|
.gridAutoRepeatAndFixedAfter { grid-template-columns: repeat(auto-fill, [first] 30px [last]) [foo] minmax(60px, 80px) [bar] minmax(45px, max-content); }
|
||||||
.gridAutoRepeatAndFixed { grid-template-columns: [start] repeat(2, 50px [a]) [middle] repeat(auto-fill, [autofoo] 15px [autobar]) minmax(5%, 10%) [end]; }
|
.gridAutoRepeatAndFixed { grid-template-columns: [start] repeat(2, 50px [a]) [middle] repeat(auto-fill, [autofoo] 15px [autobar]) minmax(5%, 10%) [end]; }
|
||||||
.gridMultipleNames { grid-template-columns: [start] 20px [foo] 50% repeat(auto-fill, [bar] 20px [start foo]) [foo] 10% [end bar]; }
|
.gridMultipleNames { grid-template-columns: [start] 20px [foo] 50% repeat(auto-fill, [bar] 20px [start foo]) [foo] 10% [end bar]; }
|
||||||
.gridMultipleTracks { grid-template-columns: [start] 20px repeat(auto-fill, [a] 2em [b c] 10% [d]) [e] minmax(75px, 1fr) [last]; }
|
.gridMultipleTracks { grid-template-columns: [start] 20px repeat(auto-fill, [a] 2em [b c] 10% [d]) [e] minmax(75px, 1fr) [last]; }
|
||||||
|
|
||||||
.item { background-color: cyan; }
|
.item { background: cyan; }
|
||||||
|
|
||||||
.gap { grid-column-gap: 20px; }
|
.gap { grid-column-gap: 20px; }
|
||||||
|
|
||||||
|
@ -45,7 +48,19 @@
|
||||||
<p>This test checks that repeat(auto-fill, ) syntax works as expected.</p>
|
<p>This test checks that repeat(auto-fill, ) syntax works as expected.</p>
|
||||||
|
|
||||||
<div class="grid gridOnlyAutoRepeat">
|
<div class="grid gridOnlyAutoRepeat">
|
||||||
<div class="item" style="grid-column: 1 / span 6" data-offset-x="0" data-offset-y="0" data-expected-width="180" data-expected-height="25"></div>
|
<div class="item" style="grid-column: 1 / -1" data-offset-x="0" data-offset-y="0" data-expected-width="180" data-expected-height="25"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gridMinMaxAutoRepeat">
|
||||||
|
<div class="item" style="grid-column: 1 / -1" data-offset-x="0" data-offset-y="0" data-expected-width="180" data-expected-height="25"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gridMaxMinAutoRepeat">
|
||||||
|
<div class="item" style="grid-column: 1 / -1" data-offset-x="0" data-offset-y="0" data-expected-width="180" data-expected-height="25"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gridMaxMinPercentAutoRepeat">
|
||||||
|
<div class="item" style="grid-column: 1 / -1" data-offset-x="0" data-offset-y="0" data-expected-width="180" data-expected-height="25"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid gridOnlyAutoRepeat">
|
<div class="grid gridOnlyAutoRepeat">
|
||||||
|
|
|
@ -28,18 +28,20 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.gridOnlyAutoRepeat { grid-template-rows: repeat(auto-fill, 30px [autobar]); }
|
.gridOnlyAutoRepeat { grid-template-rows: repeat(auto-fill, 30px [autobar]); }
|
||||||
|
.gridMinMaxAutoRepeat { grid-template-rows: repeat(auto-fill, minmax(13px, 30px)); }
|
||||||
|
.gridMaxMinAutoRepeat { grid-template-rows: repeat(auto-fill, minmax(30px, 13px)); }
|
||||||
|
.gridMaxMinPercentAutoRepeat { grid-template-rows: repeat(auto-fill, minmax(30px, 6.5%)); }
|
||||||
.gridAutoRepeatAndFixedBefore { grid-template-rows: 10px [foo] 20% [bar] repeat(auto-fill, [autofoo] 35px); }
|
.gridAutoRepeatAndFixedBefore { grid-template-rows: 10px [foo] 20% [bar] repeat(auto-fill, [autofoo] 35px); }
|
||||||
.gridAutoRepeatAndFixedAfter { grid-template-rows: repeat(auto-fill, [first] 30px [last]) [foo] minmax(60px, 80px) [bar] minmax(45px, max-content); }
|
.gridAutoRepeatAndFixedAfter { grid-template-rows: repeat(auto-fill, [first] 30px [last]) [foo] minmax(60px, 80px) [bar] minmax(45px, max-content); }
|
||||||
.gridAutoRepeatAndFixed { grid-template-rows: [start] repeat(2, 50px [a]) [middle] repeat(auto-fill, [autofoo] 15px [autobar]) minmax(5%, 10%) [end]; }
|
.gridAutoRepeatAndFixed { grid-template-rows: [start] repeat(2, 50px [a]) [middle] repeat(auto-fill, [autofoo] 15px [autobar]) minmax(5%, 10%) [end]; }
|
||||||
.gridMultipleNames { grid-template-rows: [start] 20px [foo] 50% repeat(auto-fill, [bar] 20px [start foo]) [foo] 10% [end bar]; }
|
.gridMultipleNames { grid-template-rows: [start] 20px [foo] 50% repeat(auto-fill, [bar] 20px [start foo]) [foo] 10% [end bar]; }
|
||||||
.gridMultipleTracks { grid-template-rows: [start] 20px repeat(auto-fill, [a] 2em [b c] 10% [d]) [e] minmax(75px, 1fr) [last]; }
|
.gridMultipleTracks { grid-template-rows: [start] 20px repeat(auto-fill, [a] 2em [b c] 10% [d]) [e] minmax(75px, 1fr) [last]; }
|
||||||
|
|
||||||
.item { background-color: blue; }
|
.item { background: blue; }
|
||||||
.item:nth-child(2) { background: green; }
|
.item:nth-child(2) { background: green; }
|
||||||
.item:nth-child(3) { background: orange; }
|
.item:nth-child(3) { background: orange; }
|
||||||
|
|
||||||
.gap { grid-row-gap: 20px; }
|
.gap { grid-row-gap: 20px; }
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
|
@ -52,7 +54,19 @@
|
||||||
<p>This test checks that repeat(auto-fill, ) syntax works as expected.</p>
|
<p>This test checks that repeat(auto-fill, ) syntax works as expected.</p>
|
||||||
|
|
||||||
<div class="grid gridOnlyAutoRepeat">
|
<div class="grid gridOnlyAutoRepeat">
|
||||||
<div class="item" style="grid-row: 1 / span 6" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div>
|
<div class="item" style="grid-row: 1 / -1" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gridMinMaxAutoRepeat">
|
||||||
|
<div class="item" style="grid-row: 1 / -1" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gridMaxMinAutoRepeat">
|
||||||
|
<div class="item" style="grid-row: 1 / -1" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gridMaxMinPercentAutoRepeat">
|
||||||
|
<div class="item" style="grid-row: 1 / -1" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid gridOnlyAutoRepeat">
|
<div class="grid gridOnlyAutoRepeat">
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>CSS Grid: auto-fit columns</title>
|
<title>CSS Grid: auto-fit columns</title>
|
||||||
|
<base href="https://wpt.live/css/css-grid/grid-definition/grid-auto-fill-rows-001.html">
|
||||||
|
|
||||||
<link rel="author" title="Sergio Villar" href="mailto: svillar@igalia.com">
|
<link rel="author" title="Sergio Villar" href="mailto: svillar@igalia.com">
|
||||||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#valdef-repeat-auto-fit">
|
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#valdef-repeat-auto-fit">
|
||||||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-auto-columns">
|
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-auto-columns">
|
||||||
|
@ -24,6 +26,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.gridOnlyAutoRepeat { grid-template-columns: repeat(auto-fit, 30px [autobar]); }
|
.gridOnlyAutoRepeat { grid-template-columns: repeat(auto-fit, 30px [autobar]); }
|
||||||
|
.gridMinMaxAutoRepeat { grid-template-columns: repeat(auto-fill, minmax(13px, 30px)); }
|
||||||
|
.gridMaxMinAutoRepeat { grid-template-columns: repeat(auto-fill, minmax(30px, 13px)); }
|
||||||
|
.gridMaxMinPercentAutoRepeat { grid-template-columns: repeat(auto-fill, minmax(30px, 6.5%)); }
|
||||||
.gridAutoRepeatAndFixedBefore { grid-template-columns: 10px [foo] 20% [bar] repeat(auto-fit, [autofoo] 35px); }
|
.gridAutoRepeatAndFixedBefore { grid-template-columns: 10px [foo] 20% [bar] repeat(auto-fit, [autofoo] 35px); }
|
||||||
.gridAutoRepeatAndFixedAfter { grid-template-columns: repeat(auto-fit, [first] 30px [last]) [foo] minmax(60px, 80px) [bar] minmax(45px, max-content); }
|
.gridAutoRepeatAndFixedAfter { grid-template-columns: repeat(auto-fit, [first] 30px [last]) [foo] minmax(60px, 80px) [bar] minmax(45px, max-content); }
|
||||||
.gridAutoRepeatAndFixed { grid-template-columns: [start] repeat(2, 50px [a]) [middle] repeat(auto-fit, [autofoo] 15px [autobar]) minmax(5%, 10%) [end]; }
|
.gridAutoRepeatAndFixed { grid-template-columns: [start] repeat(2, 50px [a]) [middle] repeat(auto-fit, [autofoo] 15px [autobar]) minmax(5%, 10%) [end]; }
|
||||||
|
@ -31,8 +36,8 @@
|
||||||
.gridMultipleTracks { grid-template-columns: [start] 20px repeat(auto-fit, [a] 2em [b c] 10% [d]) [e] minmax(75px, 1fr) [last]; }
|
.gridMultipleTracks { grid-template-columns: [start] 20px repeat(auto-fit, [a] 2em [b c] 10% [d]) [e] minmax(75px, 1fr) [last]; }
|
||||||
.gridMinMaxFixedFlex { grid-template-columns: repeat(auto-fit, minmax(50px, 1fr)); }
|
.gridMinMaxFixedFlex { grid-template-columns: repeat(auto-fit, minmax(50px, 1fr)); }
|
||||||
|
|
||||||
.item { background-color: cyan; }
|
.item { background: cyan; }
|
||||||
.item:nth-child(2n) { background-color: green; }
|
.item:nth-child(2n) { background: green; }
|
||||||
|
|
||||||
.gap { grid-column-gap: 20px; }
|
.gap { grid-column-gap: 20px; }
|
||||||
|
|
||||||
|
@ -48,7 +53,19 @@
|
||||||
<p>This test checks that repeat(auto-fit, ) syntax works as expected.</p>
|
<p>This test checks that repeat(auto-fit, ) syntax works as expected.</p>
|
||||||
|
|
||||||
<div class="grid gridOnlyAutoRepeat">
|
<div class="grid gridOnlyAutoRepeat">
|
||||||
<div class="item" style="grid-column: 1 / span 6" data-offset-x="0" data-offset-y="0" data-expected-width="180" data-expected-height="25"></div>
|
<div class="item" style="grid-column: 1 / -1" data-offset-x="0" data-offset-y="0" data-expected-width="180" data-expected-height="25"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gridMinMaxAutoRepeat">
|
||||||
|
<div class="item" style="grid-column: 1 / -1" data-offset-x="0" data-offset-y="0" data-expected-width="180" data-expected-height="25"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gridMaxMinAutoRepeat">
|
||||||
|
<div class="item" style="grid-column: 1 / -1" data-offset-x="0" data-offset-y="0" data-expected-width="180" data-expected-height="25"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gridMaxMinPercentAutoRepeat">
|
||||||
|
<div class="item" style="grid-column: 1 / -1" data-offset-x="0" data-offset-y="0" data-expected-width="180" data-expected-height="25"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid gridOnlyAutoRepeat">
|
<div class="grid gridOnlyAutoRepeat">
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>CSS Grid: auto-fit rows</title>
|
<title>CSS Grid: auto-fit rows</title>
|
||||||
<link rel="author" title="Sergio Villar" href="mailto: svillar@igalia.com">
|
h<link rel="author" title="Sergio Villar" href="mailto: svillar@igalia.com">
|
||||||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#valdef-repeat-auto-fit">
|
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#valdef-repeat-auto-fit">
|
||||||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-auto-columns">
|
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-auto-columns">
|
||||||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-auto-rows">
|
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-auto-rows">
|
||||||
|
@ -27,14 +27,17 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.gridOnlyAutoRepeat { grid-template-rows: repeat(auto-fit, 30px [autobar]); }
|
.gridOnlyAutoRepeat { grid-template-rows: repeat(auto-fit, 30px [autobar]); }
|
||||||
|
.gridMinMaxAutoRepeat { grid-template-rows: repeat(auto-fill, minmax(13px, 30px)); }
|
||||||
|
.gridMaxMinAutoRepeat { grid-template-rows: repeat(auto-fill, minmax(30px, 13px)); }
|
||||||
|
.gridMaxMinPercentAutoRepeat { grid-template-rows: repeat(auto-fill, minmax(30px, 6.5%)); }
|
||||||
.gridAutoRepeatAndFixedBefore { grid-template-rows: 10px [foo] 20% [bar] repeat(auto-fit, [autofoo] 35px); }
|
.gridAutoRepeatAndFixedBefore { grid-template-rows: 10px [foo] 20% [bar] repeat(auto-fit, [autofoo] 35px); }
|
||||||
.gridAutoRepeatAndFixedAfter { grid-template-rows: repeat(auto-fit, [first] 30px [last]) [foo] minmax(60px, 80px) [bar] minmax(45px, max-content); }
|
.gridAutoRepeatAndFixedAfter { grid-template-rows: repeat(auto-fit, [first] 30px [last]) [foo] minmax(60px, 80px) [bar] minmax(45px, max-content); }
|
||||||
.gridAutoRepeatAndFixed { grid-template-rows: [start] repeat(2, 50px [a]) [middle] repeat(auto-fit, [autofoo] 15px [autobar]) minmax(5%, 10%) [end]; }
|
.gridAutoRepeatAndFixed { grid-template-rows: [start] repeat(2, 50px [a]) [middle] repeat(auto-fit, [autofoo] 15px [autobar]) minmax(5%, 10%) [end]; }
|
||||||
.gridMultipleNames { grid-template-rows: [start] 20px [foo] 50% repeat(auto-fit, [bar] 20px [start foo]) [foo] 10% [end bar]; }
|
.gridMultipleNames { grid-template-rows: [start] 20px [foo] 50% repeat(auto-fit, [bar] 20px [start foo]) [foo] 10% [end bar]; }
|
||||||
.gridMultipleTracks { grid-template-rows: [start] 20px repeat(auto-fit, [a] 2em [b c] 10% [d]) [e] minmax(75px, 1fr) [last]; }
|
.gridMultipleTracks { grid-template-rows: [start] 20px repeat(auto-fit, [a] 2em [b c] 10% [d]) [e] minmax(75px, 1fr) [last]; }
|
||||||
|
|
||||||
.item { background-color: cyan; }
|
.item { background: cyan; }
|
||||||
.item:nth-child(2n) { background-color: green; }
|
.item:nth-child(2n) { background: green; }
|
||||||
|
|
||||||
.gap { grid-row-gap: 20px; }
|
.gap { grid-row-gap: 20px; }
|
||||||
|
|
||||||
|
@ -53,6 +56,18 @@
|
||||||
<div class="item" style="grid-row: 1 / span 6" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div>
|
<div class="item" style="grid-row: 1 / span 6" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gridMinMaxAutoRepeat">
|
||||||
|
<div class="item" style="grid-row: 1 / -1" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gridMaxMinAutoRepeat">
|
||||||
|
<div class="item" style="grid-row: 1 / -1" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gridMaxMinPercentAutoRepeat">
|
||||||
|
<div class="item" style="grid-row: 1 / -1" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="grid gridOnlyAutoRepeat">
|
<div class="grid gridOnlyAutoRepeat">
|
||||||
<div class="item" style="grid-row: 1 / span 6 autobar" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div>
|
<div class="item" style="grid-row: 1 / span 6 autobar" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -25,29 +25,29 @@
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"lower UPPER 10 -minus _low 1-st ©copy_right line¶"', '"lower UPPER 10 -minus _low 1-st ©copy_right line¶"');
|
TestingUtils.testGridTemplateAreas('grid', '"lower UPPER 10 -minus _low 1-st ©copy_right line¶"', '"lower UPPER 10 -minus _low 1-st ©copy_right line¶"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"a b"', '"a b"');
|
TestingUtils.testGridTemplateAreas('grid', '"a b"', '"a b"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"a b" "c d"', '"a b" "c d"');
|
TestingUtils.testGridTemplateAreas('grid', '"a b" "c d"', '"a b" "c d"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"a b" "c d"', ['"a b" "c d"', '"a b" "c d"']);
|
TestingUtils.testGridTemplateAreas('grid', '"a b" "c d"', '"a b" "c d"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"a b""c d"', '"a b" "c d"');
|
TestingUtils.testGridTemplateAreas('grid', '"a b""c d"', '"a b" "c d"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"a b"\t"c d"', '"a b" "c d"');
|
TestingUtils.testGridTemplateAreas('grid', '"a b"\t"c d"', '"a b" "c d"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"a b"\n"c d"', '"a b" "c d"');
|
TestingUtils.testGridTemplateAreas('grid', '"a b"\n"c d"', '"a b" "c d"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"a b" "a b"', '"a b" "a b"');
|
TestingUtils.testGridTemplateAreas('grid', '"a b" "a b"', '"a b" "a b"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"a a" "b b"', '"a a" "b b"');
|
TestingUtils.testGridTemplateAreas('grid', '"a a" "b b"', '"a a" "b b"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '". a ." "b a c"', '". a ." "b a c"');
|
TestingUtils.testGridTemplateAreas('grid', '". a ." "b a c"', '". a ." "b a c"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '".. a ..." "b a c"', ['". a ." "b a c"', '".. a ..." "b a c"']);
|
TestingUtils.testGridTemplateAreas('grid', '".. a ..." "b a c"', '". a ." "b a c"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '".a..." "b a c"', ['". a ." "b a c"', '".a..." "b a c"']);
|
TestingUtils.testGridTemplateAreas('grid', '".a..." "b a c"', '". a ." "b a c"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"head head" "nav main" "foot ."', '"head head" "nav main" "foot ."');
|
TestingUtils.testGridTemplateAreas('grid', '"head head" "nav main" "foot ."', '"head head" "nav main" "foot ."');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"head head" "nav main" "foot ...."', ['"head head" "nav main" "foot ."', '"head head" "nav main" "foot ...."']);
|
TestingUtils.testGridTemplateAreas('grid', '"head head" "nav main" "foot ...."', '"head head" "nav main" "foot ."');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"head head" "nav main" "foot."', ['"head head" "nav main" "foot ."', '"head head" "nav main" "foot."']);
|
TestingUtils.testGridTemplateAreas('grid', '"head head" "nav main" "foot."', '"head head" "nav main" "foot ."');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '". header header ." "nav main main main" "nav footer footer ."', '". header header ." "nav main main main" "nav footer footer ."');
|
TestingUtils.testGridTemplateAreas('grid', '". header header ." "nav main main main" "nav footer footer ."', '". header header ." "nav main main main" "nav footer footer ."');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"... header header ...." "nav main main main" "nav footer footer ...."', ['". header header ." "nav main main main" "nav footer footer ."', '"... header header ...." "nav main main main" "nav footer footer ...."']);
|
TestingUtils.testGridTemplateAreas('grid', '"... header header ...." "nav main main main" "nav footer footer ...."', '". header header ." "nav main main main" "nav footer footer ."');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"...header header...." "nav main main main" "nav footer footer...."', ['". header header ." "nav main main main" "nav footer footer ."', '"...header header...." "nav main main main" "nav footer footer...."']);
|
TestingUtils.testGridTemplateAreas('grid', '"...header header...." "nav main main main" "nav footer footer...."', '". header header ." "nav main main main" "nav footer footer ."');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"title stats" "score stats" "board board" "ctrls ctrls"', '"title stats" "score stats" "board board" "ctrls ctrls"');
|
TestingUtils.testGridTemplateAreas('grid', '"title stats" "score stats" "board board" "ctrls ctrls"', '"title stats" "score stats" "board board" "ctrls ctrls"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"title board" "stats board" "score ctrls"', '"title board" "stats board" "score ctrls"');
|
TestingUtils.testGridTemplateAreas('grid', '"title board" "stats board" "score ctrls"', '"title board" "stats board" "score ctrls"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '". a" "b a" ". a"', '". a" "b a" ". a"');
|
TestingUtils.testGridTemplateAreas('grid', '". a" "b a" ". a"', '". a" "b a" ". a"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '".. a" "b a" "... a"', ['". a" "b a" ". a"', '".. a" "b a" "... a"']);
|
TestingUtils.testGridTemplateAreas('grid', '".. a" "b a" "... a"', '". a" "b a" ". a"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"..a" "b a" ".a"', ['". a" "b a" ". a"', '"..a" "b a" ".a"']);
|
TestingUtils.testGridTemplateAreas('grid', '"..a" "b a" ".a"', '". a" "b a" ". a"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"a a a" "b b b"', '"a a a" "b b b"');
|
TestingUtils.testGridTemplateAreas('grid', '"a a a" "b b b"', '"a a a" "b b b"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '". ." "a a"', '". ." "a a"');
|
TestingUtils.testGridTemplateAreas('grid', '". ." "a a"', '". ." "a a"');
|
||||||
TestingUtils.testGridTemplateAreas('grid', '"... ...." "a a"', ['". ." "a a"', '"... ...." "a a"']);
|
TestingUtils.testGridTemplateAreas('grid', '"... ...." "a a"', '". ." "a a"');
|
||||||
|
|
||||||
// Reset values.
|
// Reset values.
|
||||||
document.getElementById('grid').style.gridTemplateAreas = '';
|
document.getElementById('grid').style.gridTemplateAreas = '';
|
||||||
|
|
|
@ -44,6 +44,12 @@ div { font: 10px/1 Ahem; }
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<div class="grid min-content" data-expected-width="30" data-expected-height="20" style="grid-template-columns:minmax(0, 1fr);">
|
||||||
|
<div>XXX XXX</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="grid max-content" data-expected-width="70" data-expected-height="10">
|
<div class="grid max-content" data-expected-width="70" data-expected-height="10">
|
||||||
<div>XXX XXX</div>
|
<div>XXX XXX</div>
|
||||||
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Grid Layout Test: Intrinsic contribution of an item with flex tracks</title>
|
||||||
|
<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
|
||||||
|
<link rel="author" title="Tab Atkins-Bittner" href="mailto:jackalmage@gmail.com">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-grid/#algo-spanning-items" title="11.5.3 Increase sizes to accommodate spanning items crossing content-sized tracks">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-grid/#algo-spanning-flex-items" title="11.5.4 Increase sizes to accommodate spanning items crossing flexible tracks">
|
||||||
|
<meta name="assert" content="This test checks that the intrinsic contribution of a single grid item is distributed correctly among the tracks it spans when flexible tracks are involved, and the item's size is determined by its children rather than explicitly.">
|
||||||
|
<style>
|
||||||
|
#grid {
|
||||||
|
display: grid;
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
border: solid;
|
||||||
|
}
|
||||||
|
#item {
|
||||||
|
background: blue;
|
||||||
|
}
|
||||||
|
#item::before {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div id="log"></div>
|
||||||
|
|
||||||
|
<div id="grid">
|
||||||
|
<div id="item"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="../grid-definition/support/testing-utils.js"></script>
|
||||||
|
<script>
|
||||||
|
const item = document.getElementById("item");
|
||||||
|
function checkTrackSizes(span, trackList, expected) {
|
||||||
|
item.style.gridColumn = item.style.gridRow = `span ${span}`;
|
||||||
|
TestingUtils.testGridTemplateColumnsRows("grid", trackList, trackList, expected, expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Item spanning an intrinsic flexible track
|
||||||
|
checkTrackSizes(1, "0fr", "100px");
|
||||||
|
checkTrackSizes(1, "1fr", "100px");
|
||||||
|
checkTrackSizes(1, "2fr", "100px");
|
||||||
|
|
||||||
|
// Item spanning a fixed flexible track
|
||||||
|
checkTrackSizes(1, "minmax(0, 0fr)", "0px");
|
||||||
|
checkTrackSizes(1, "minmax(0, .5fr)", "25px");
|
||||||
|
checkTrackSizes(1, "minmax(0, 1fr)", "50px");
|
||||||
|
checkTrackSizes(1, "minmax(0, 2fr)", "50px");
|
||||||
|
checkTrackSizes(1, "minmax(75px, 1fr)", "75px");
|
||||||
|
|
||||||
|
// Item spanning 2 intrinsic flexible tracks
|
||||||
|
checkTrackSizes(2, "0fr 0fr", "50px 50px");
|
||||||
|
checkTrackSizes(2, "0fr 1fr", "0px 100px");
|
||||||
|
checkTrackSizes(2, "1fr 0fr", "100px 0px");
|
||||||
|
checkTrackSizes(2, "1fr 1fr", "50px 50px");
|
||||||
|
checkTrackSizes(2, "1fr 3fr", "25px 75px");
|
||||||
|
checkTrackSizes(2, "0fr 0fr 1fr", "50px 50px 0px");
|
||||||
|
|
||||||
|
// Item spanning 2 fixed flexible tracks
|
||||||
|
checkTrackSizes(2, "minmax(0, 0fr) minmax(0, 0fr)", "0px 0px");
|
||||||
|
checkTrackSizes(2, "minmax(0, 0fr) minmax(0, 1fr)", "0px 50px");
|
||||||
|
checkTrackSizes(2, "minmax(15px, 0fr) minmax(0, 1fr)", "15px 35px");
|
||||||
|
checkTrackSizes(2, "minmax(20px, 1fr) minmax(0, 1fr)", "25px 25px");
|
||||||
|
checkTrackSizes(2, "minmax(30px, 1fr) minmax(0, 1fr)", "30px 20px");
|
||||||
|
|
||||||
|
// Item spanning an intrinsic flexible track and a fixed flexible track
|
||||||
|
checkTrackSizes(2, "0fr minmax(0, 0fr)", "100px 0px");
|
||||||
|
checkTrackSizes(2, "0fr minmax(0, 1fr)", "100px 0px");
|
||||||
|
checkTrackSizes(2, "1fr minmax(0, 1fr)", "100px 0px");
|
||||||
|
checkTrackSizes(2, "1fr minmax(25px, 1fr)", "75px 25px");
|
||||||
|
|
||||||
|
// Item spanning an intrinsic flexible track and an intrinsic non-flexible track
|
||||||
|
checkTrackSizes(2, "0fr auto", "100px 0px");
|
||||||
|
checkTrackSizes(2, "1fr auto", "100px 0px");
|
||||||
|
checkTrackSizes(2, "1fr max-content", "100px 0px");
|
||||||
|
|
||||||
|
// Item spanning a fixed flexible track and an intrinsic non-flexible track
|
||||||
|
checkTrackSizes(2, "minmax(0, 0fr) auto", "0px 100px");
|
||||||
|
checkTrackSizes(2, "minmax(0, 1fr) auto", "0px 100px");
|
||||||
|
checkTrackSizes(2, "minmax(25px, 0fr) auto", "25px 75px");
|
||||||
|
checkTrackSizes(2, "minmax(25px, 1fr) auto", "25px 75px");
|
||||||
|
</script>
|
|
@ -0,0 +1,21 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<style>
|
||||||
|
html {
|
||||||
|
background: red;
|
||||||
|
/* an "L" shape */
|
||||||
|
clip-path: polygon(50px 50px, 100px 50px, 100px 100px, 150px 100px, 150px 150px, 50px 150px);
|
||||||
|
will-change: transform;
|
||||||
|
}
|
||||||
|
div {
|
||||||
|
width: 500px;
|
||||||
|
height: 500px;
|
||||||
|
background: green;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<link rel="help" href="http://www.w3.org/TR/css-masking-1/#the-clip-path">
|
||||||
|
<link rel="help" href="https://drafts.fxtf.org/compositing/#rootgroup">
|
||||||
|
<link rel="help" href="https://drafts.fxtf.org/compositing/#pagebackdrop">
|
||||||
|
<link rel="match" href="reference/clip-path-document-element-ref.html">
|
||||||
|
<meta name="assert" content="Clip-path on the document element applies to the root background.
|
||||||
|
The test passes if there is a green 'L' shape without red.">
|
||||||
|
<div></div>
|
|
@ -0,0 +1,20 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<style>
|
||||||
|
html {
|
||||||
|
background: red;
|
||||||
|
/* an "L" shape */
|
||||||
|
clip-path: polygon(50px 50px, 100px 50px, 100px 100px, 150px 100px, 150px 150px, 50px 150px);
|
||||||
|
}
|
||||||
|
div {
|
||||||
|
width: 500px;
|
||||||
|
height: 500px;
|
||||||
|
background: green;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<link rel="help" href="http://www.w3.org/TR/css-masking-1/#the-clip-path">
|
||||||
|
<link rel="help" href="https://drafts.fxtf.org/compositing/#rootgroup">
|
||||||
|
<link rel="help" href="https://drafts.fxtf.org/compositing/#pagebackdrop">
|
||||||
|
<link rel="match" href="reference/clip-path-document-element-ref.html">
|
||||||
|
<meta name="assert" content="Clip-path on the document element applies to the root background.
|
||||||
|
The test passes if there is a green 'L' shape without red.">
|
||||||
|
<div></div>
|
|
@ -0,0 +1,12 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
position: absolute;
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
background: green;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div style="top: 50px; left: 50px"></div>
|
||||||
|
<div style="top: 100px; left: 50px"></div>
|
||||||
|
<div style="top: 100px; left: 100px"></div>
|
|
@ -36,7 +36,7 @@
|
||||||
.unselectable {
|
.unselectable {
|
||||||
display: block;
|
display: block;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
-webkit-user-select: none; /* Yes, vendor prefixes are ugly. But this one was grandfathered in and support is required by spec. */
|
-webkit-user-select: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
<!doctype html>
|
||||||
|
<title>CSS Values and Units Test: rem units on the root element</title>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-values/#rem">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
font-size: 50px;
|
||||||
|
margin-left: 2rem;
|
||||||
|
padding-top: 2rem;
|
||||||
|
line-height: 2rem;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
let rootStyle = getComputedStyle(document.documentElement);
|
||||||
|
test(() => assert_equals(rootStyle.marginLeft, "100px"), "rem based margin.");
|
||||||
|
test(() => assert_equals(rootStyle.paddingTop, "100px"), "rem based padding.");
|
||||||
|
test(() => assert_equals(rootStyle.lineHeight, "100px"), "rem based line-height.");
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
document.documentElement.style.fontSize = "initial";
|
||||||
|
let initialFontSize = parseInt(getComputedStyle(document.documentElement).fontSize);
|
||||||
|
document.documentElement.style.fontSize = "3rem";
|
||||||
|
assert_equals(getComputedStyle(document.documentElement).fontSize, 3*initialFontSize + "px");
|
||||||
|
}, "Check that rem font-size is based on the initial font-size.");
|
||||||
|
</script>
|
|
@ -0,0 +1,14 @@
|
||||||
|
// META: script=/resources/WebIDLParser.js
|
||||||
|
// META: script=/resources/idlharness.js
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
idl_test(
|
||||||
|
['custom-state-pseudo-class'],
|
||||||
|
['html'],
|
||||||
|
idl_array => {
|
||||||
|
idl_array.add_objects({
|
||||||
|
// Nothing to add; spec only defined a partial interface.
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
|
@ -0,0 +1,14 @@
|
||||||
|
// META: script=/resources/WebIDLParser.js
|
||||||
|
// META: script=/resources/idlharness.js
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
idl_test(
|
||||||
|
['deprecation-reporting'],
|
||||||
|
['reporting'],
|
||||||
|
idl_array => {
|
||||||
|
idl_array.add_objects({
|
||||||
|
// TODO: objects
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
|
@ -85,6 +85,13 @@ matches the expected HTML provided here. As on line 1, the characters []{}
|
||||||
expected to be in the HTML. However, on this line they don't affect the test's
|
expected to be in the HTML. However, on this line they don't affect the test's
|
||||||
processing -- there are no tests of what the final selection is.
|
processing -- there are no tests of what the final selection is.
|
||||||
|
|
||||||
|
This can be array of string if there are some acceptable cases. However,
|
||||||
|
array shouldn't be used as far as possible because WPT checks compatibility
|
||||||
|
between browsers. So, this should be used when:
|
||||||
|
|
||||||
|
- There are some different behaviors in edge cases.
|
||||||
|
- There are some differences which are not related to the test.
|
||||||
|
|
||||||
## Line 4: expected return values ##
|
## Line 4: expected return values ##
|
||||||
|
|
||||||
["foo[bar]baz",
|
["foo[bar]baz",
|
||||||
|
|
|
@ -2494,5 +2494,65 @@ var browserTests = [
|
||||||
[["delete",""]],
|
[["delete",""]],
|
||||||
"<div>foobar</div>",
|
"<div>foobar</div>",
|
||||||
[true],
|
[true],
|
||||||
{"delete":[false,false,"",false,false,""]}]
|
{"delete":[false,false,"",false,false,""]}],
|
||||||
|
["<div> a[]bc</div>",
|
||||||
|
[["delete",""]],
|
||||||
|
"<div>bc</div>",
|
||||||
|
[true],
|
||||||
|
{"delete":[false,false,"",false,false,""]}],
|
||||||
|
["<div> a[]bc</div>",
|
||||||
|
[["delete",""]],
|
||||||
|
"<div>bc</div>",
|
||||||
|
[true],
|
||||||
|
{"delete":[false,false,"",false,false,""]}],
|
||||||
|
["<div> []abc</div>",
|
||||||
|
[["delete",""]],
|
||||||
|
"<div> abc</div>",
|
||||||
|
[true],
|
||||||
|
{"delete":[false,false,"",false,false,""]}],
|
||||||
|
["<div> [] abc</div>",
|
||||||
|
[["delete",""]],
|
||||||
|
"<div> abc</div>",
|
||||||
|
[true],
|
||||||
|
{"delete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc</div><div> []def</div>",
|
||||||
|
[["delete",""]],
|
||||||
|
"<div>abcdef</div>",
|
||||||
|
[true],
|
||||||
|
{"delete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc</div><div> [] def</div>",
|
||||||
|
[["delete",""]],
|
||||||
|
"<div>abcdef</div>",
|
||||||
|
[true],
|
||||||
|
{"delete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc</div><div> []def</div>",
|
||||||
|
[["delete",""]],
|
||||||
|
"<div>abcdef</div>",
|
||||||
|
[true],
|
||||||
|
{"delete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc </div><div>[]def</div>",
|
||||||
|
[["delete",""]],
|
||||||
|
"<div>abcdef</div>",
|
||||||
|
[true],
|
||||||
|
{"delete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc </div><div>[]def</div>",
|
||||||
|
[["delete",""]],
|
||||||
|
"<div>abcdef</div>",
|
||||||
|
[true],
|
||||||
|
{"delete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc </div><div> []def</div>",
|
||||||
|
[["delete",""]],
|
||||||
|
"<div>abcdef</div>",
|
||||||
|
[true],
|
||||||
|
{"delete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc </div><div> [] def</div>",
|
||||||
|
[["delete",""]],
|
||||||
|
"<div>abcdef</div>",
|
||||||
|
[true],
|
||||||
|
{"delete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc </div> <div> []def</div>",
|
||||||
|
[["delete",""]],
|
||||||
|
"<div>abcdef</div>",
|
||||||
|
[true],
|
||||||
|
{"delete":[false,false,"",false,false,""]}],
|
||||||
]
|
]
|
||||||
|
|
|
@ -2379,5 +2379,65 @@ var browserTests = [
|
||||||
[["forwarddelete",""]],
|
[["forwarddelete",""]],
|
||||||
"<div>foobar</div>",
|
"<div>foobar</div>",
|
||||||
[true],
|
[true],
|
||||||
{"forwarddelete":[false,false,"",false,false,""]}]
|
{"forwarddelete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>ab[]c </div>",
|
||||||
|
[["forwarddelete",""]],
|
||||||
|
"<div>ab</div>",
|
||||||
|
[true],
|
||||||
|
{"forwarddelete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>ab[]c </div>",
|
||||||
|
[["forwarddelete",""]],
|
||||||
|
"<div>ab</div>",
|
||||||
|
[true],
|
||||||
|
{"forwarddelete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc[] </div>",
|
||||||
|
[["forwarddelete",""]],
|
||||||
|
"<div>abc </div>",
|
||||||
|
[true],
|
||||||
|
{"forwarddelete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc [] </div>",
|
||||||
|
[["forwarddelete",""]],
|
||||||
|
"<div>abc </div>",
|
||||||
|
[true],
|
||||||
|
{"forwarddelete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc[] </div><div>def</div>",
|
||||||
|
[["forwarddelete",""]],
|
||||||
|
"<div>abcdef</div>",
|
||||||
|
[true],
|
||||||
|
{"forwarddelete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc[] </div><div>def</div>",
|
||||||
|
[["forwarddelete",""]],
|
||||||
|
"<div>abcdef</div>",
|
||||||
|
[true],
|
||||||
|
{"forwarddelete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc [] </div><div>def</div>",
|
||||||
|
[["forwarddelete",""]],
|
||||||
|
"<div>abcdef</div>",
|
||||||
|
[true],
|
||||||
|
{"forwarddelete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc[]</div><div> def</div>",
|
||||||
|
[["forwarddelete",""]],
|
||||||
|
"<div>abcdef</div>",
|
||||||
|
[true],
|
||||||
|
{"forwarddelete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc[]</div><div> def</div>",
|
||||||
|
[["forwarddelete",""]],
|
||||||
|
"<div>abcdef</div>",
|
||||||
|
[true],
|
||||||
|
{"forwarddelete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc[] </div><div> def</div>",
|
||||||
|
[["forwarddelete",""]],
|
||||||
|
"<div>abcdef</div>",
|
||||||
|
[true],
|
||||||
|
{"forwarddelete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc [] </div><div> def</div>",
|
||||||
|
[["forwarddelete",""]],
|
||||||
|
"<div>abcdef</div>",
|
||||||
|
[true],
|
||||||
|
{"forwarddelete":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc[] </div> <div> def</div>",
|
||||||
|
[["forwarddelete",""]],
|
||||||
|
"<div>abcdef</div>",
|
||||||
|
[true],
|
||||||
|
{"forwarddelete":[false,false,"",false,false,""]}],
|
||||||
]
|
]
|
||||||
|
|
|
@ -834,5 +834,40 @@ var browserTests = [
|
||||||
[["insertlinebreak",""]],
|
[["insertlinebreak",""]],
|
||||||
"<div class=\"a\" id=\"x\"><p class=\"b\" id=\"y\">foo<br>{}bar</p></div>",
|
"<div class=\"a\" id=\"x\"><p class=\"b\" id=\"y\">foo<br>{}bar</p></div>",
|
||||||
[true],
|
[true],
|
||||||
{"insertlinebreak":[false,false,"",false,false,""]}]
|
{"insertlinebreak":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc [] </div>",
|
||||||
|
[["insertlinebreak",""]],
|
||||||
|
"<div>abc<br><br></div>",
|
||||||
|
[true,true],
|
||||||
|
{"insertlinebreak":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc[] </div>",
|
||||||
|
[["insertlinebreak",""]],
|
||||||
|
"<div>abc<br><br></div>",
|
||||||
|
[true,true],
|
||||||
|
{"insertlinebreak":[false,false,"",false,false,""]}],
|
||||||
|
["<div>[] abc</div>",
|
||||||
|
[["insertlinebreak",""]],
|
||||||
|
["<div><br>abc</div>",
|
||||||
|
"<div><br> abc</div>"],
|
||||||
|
[true,true],
|
||||||
|
{"insertlinebreak":[false,false,"",false,false,""]}],
|
||||||
|
["<div>[] abc</div>",
|
||||||
|
[["insertlinebreak",""]],
|
||||||
|
["<div><br>abc</div>",
|
||||||
|
"<div><br> abc</div>"],
|
||||||
|
[true,true],
|
||||||
|
{"insertlinebreak":[false,false,"",false,false,""]}],
|
||||||
|
["<div> [] abc</div>",
|
||||||
|
[["insertlinebreak",""]],
|
||||||
|
["<div><br>abc</div>",
|
||||||
|
"<div><br> abc</div>",
|
||||||
|
"<div><br> abc</div>"],
|
||||||
|
[true,true],
|
||||||
|
{"insertlinebreak":[false,false,"",false,false,""]}],
|
||||||
|
["<div> []abc</div>",
|
||||||
|
[["insertlinebreak",""]],
|
||||||
|
["<div><br>abc</div>",
|
||||||
|
"<div><br> abc</div>"],
|
||||||
|
[true,true],
|
||||||
|
{"insertlinebreak":[false,false,"",false,false,""]}],
|
||||||
]
|
]
|
||||||
|
|
|
@ -1886,4 +1886,48 @@ var browserTests = [
|
||||||
"<div contenteditable=\"false\"><foo-bar contenteditable=\"\"><div>foo</div><div>bar</div></foo-bar></div>",
|
"<div contenteditable=\"false\"><foo-bar contenteditable=\"\"><div>foo</div><div>bar</div></foo-bar></div>",
|
||||||
[true,true],
|
[true,true],
|
||||||
{"defaultparagraphseparator":[false,false,"div",false,false,"p"],"insertparagraph":[false,false,"",false,false,""]}],
|
{"defaultparagraphseparator":[false,false,"div",false,false,"p"],"insertparagraph":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc[] </div>",
|
||||||
|
[["defaultparagraphseparator","div"],["insertparagraph",""]],
|
||||||
|
["<div>abc</div><div><br></div>",
|
||||||
|
"<div>abc </div><div><br></div>"],
|
||||||
|
[true,true],
|
||||||
|
{"insertparagraph":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc[] </div>",
|
||||||
|
[["defaultparagraphseparator","div"],["insertparagraph",""]],
|
||||||
|
["<div>abc</div><div><br></div>",
|
||||||
|
"<div>abc </div><div><br></div>"],
|
||||||
|
[true,true],
|
||||||
|
{"insertparagraph":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc [] </div>",
|
||||||
|
[["defaultparagraphseparator","div"],["insertparagraph",""]],
|
||||||
|
["<div>abc</div><div><br></div>",
|
||||||
|
"<div>abc </div><div><br></div>",
|
||||||
|
"<div>abc </div><div><br></div>"],
|
||||||
|
[true,true],
|
||||||
|
{"insertparagraph":[false,false,"",false,false,""]}],
|
||||||
|
["<div>[] abc</div>",
|
||||||
|
[["defaultparagraphseparator","div"],["insertparagraph",""]],
|
||||||
|
["<div><br></div><div>abc</div>",
|
||||||
|
"<div><br></div><div> abc</div>"],
|
||||||
|
[true,true],
|
||||||
|
{"insertparagraph":[false,false,"",false,false,""]}],
|
||||||
|
["<div>[] abc</div>",
|
||||||
|
[["defaultparagraphseparator","div"],["insertparagraph",""]],
|
||||||
|
["<div><br></div><div>abc</div>",
|
||||||
|
"<div><br></div><div> abc</div>"],
|
||||||
|
[true,true],
|
||||||
|
{"insertparagraph":[false,false,"",false,false,""]}],
|
||||||
|
["<div> [] abc</div>",
|
||||||
|
[["defaultparagraphseparator","div"],["insertparagraph",""]],
|
||||||
|
["<div><br></div><div>abc</div>",
|
||||||
|
"<div><br></div><div> abc</div>",
|
||||||
|
"<div><br></div><div> abc</div>"],
|
||||||
|
[true,true],
|
||||||
|
{"insertparagraph":[false,false,"",false,false,""]}],
|
||||||
|
["<div> []abc</div>",
|
||||||
|
[["defaultparagraphseparator","div"],["insertparagraph",""]],
|
||||||
|
["<div><br></div><div>abc</div>",
|
||||||
|
"<div><br></div><div> abc</div>"],
|
||||||
|
[true,true],
|
||||||
|
{"insertparagraph":[false,false,"",false,false,""]}],
|
||||||
]
|
]
|
||||||
|
|
|
@ -1189,5 +1189,60 @@ var browserTests = [
|
||||||
[["inserttext","a"]],
|
[["inserttext","a"]],
|
||||||
"<blockquote><font color=\"blue\">a[]</font></blockquote>",
|
"<blockquote><font color=\"blue\">a[]</font></blockquote>",
|
||||||
[true],
|
[true],
|
||||||
{"inserttext":[false,false,"",false,false,""]}]
|
{"inserttext":[false,false,"",false,false,""]}],
|
||||||
|
["<div>[] abc</div>",
|
||||||
|
[["inserttext"," "]],
|
||||||
|
"<div> abc</div>",
|
||||||
|
[true],
|
||||||
|
{"inserttext":[false,false,"",false,false,""]}],
|
||||||
|
["<div> []abc</div>",
|
||||||
|
[["inserttext"," "]],
|
||||||
|
"<div> abc</div>",
|
||||||
|
[true],
|
||||||
|
{"inserttext":[false,false,"",false,false,""]}],
|
||||||
|
["<div>[] abc</div>",
|
||||||
|
[["inserttext"," "]],
|
||||||
|
"<div> abc</div>",
|
||||||
|
[true],
|
||||||
|
{"inserttext":[false,false,"",false,false,""]}],
|
||||||
|
["<div> [] abc</div>",
|
||||||
|
[["inserttext"," "]],
|
||||||
|
"<div> abc</div>",
|
||||||
|
[true],
|
||||||
|
{"inserttext":[false,false,"",false,false,""]}],
|
||||||
|
["<div> []abc</div>",
|
||||||
|
[["inserttext"," "]],
|
||||||
|
"<div> abc</div>",
|
||||||
|
[true],
|
||||||
|
{"inserttext":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc[] </div>",
|
||||||
|
[["inserttext"," "]],
|
||||||
|
["<div>abc </div>",
|
||||||
|
"<div>abc <br></div>"],
|
||||||
|
[true],
|
||||||
|
{"inserttext":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc []</div>",
|
||||||
|
[["inserttext"," "]],
|
||||||
|
["<div>abc </div>",
|
||||||
|
"<div>abc <br></div>"],
|
||||||
|
[true],
|
||||||
|
{"inserttext":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc[] </div>",
|
||||||
|
[["inserttext"," "]],
|
||||||
|
["<div>abc </div>",
|
||||||
|
"<div>abc <br></div>"],
|
||||||
|
[true],
|
||||||
|
{"inserttext":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc [] </div>",
|
||||||
|
[["inserttext"," "]],
|
||||||
|
["<div>abc </div>",
|
||||||
|
"<div>abc <br></div>"],
|
||||||
|
[true],
|
||||||
|
{"inserttext":[false,false,"",false,false,""]}],
|
||||||
|
["<div>abc []</div>",
|
||||||
|
[["inserttext"," "]],
|
||||||
|
["<div>abc </div>",
|
||||||
|
"<div>abc <br></div>"],
|
||||||
|
[true],
|
||||||
|
{"inserttext":[false,false,"",false,false,""]}],
|
||||||
]
|
]
|
||||||
|
|
|
@ -5667,9 +5667,19 @@ function runConformanceTest(browserTest) {
|
||||||
subsetTest(test, function() {
|
subsetTest(test, function() {
|
||||||
assert_equals(exception, null, "Setup must not throw an exception");
|
assert_equals(exception, null, "Setup must not throw an exception");
|
||||||
|
|
||||||
assert_equals(testDiv.innerHTML,
|
if (Array.isArray(browserTest[2])) {
|
||||||
browserTest[2].replace(/[\[\]{}]/g, ""),
|
var expectedInnerHTMLArray = [];
|
||||||
"Unexpected innerHTML (after normalizing inline style)");
|
browserTest[2].forEach(function (expectedInnerHTML) {
|
||||||
|
expectedInnerHTMLArray.push(expectedInnerHTML.replace(/[\[\]{}]/g, ""));
|
||||||
|
});
|
||||||
|
assert_in_array(testDiv.innerHTML,
|
||||||
|
expectedInnerHTMLArray,
|
||||||
|
"Unexpected innerHTML (after normalizing inline style)");
|
||||||
|
} else {
|
||||||
|
assert_equals(testDiv.innerHTML,
|
||||||
|
browserTest[2].replace(/[\[\]{}]/g, ""),
|
||||||
|
"Unexpected innerHTML (after normalizing inline style)");
|
||||||
|
}
|
||||||
}, testName + " compare innerHTML");
|
}, testName + " compare innerHTML");
|
||||||
|
|
||||||
for (var command in expectedQueryResults) {
|
for (var command in expectedQueryResults) {
|
||||||
|
|
|
@ -3,6 +3,11 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>Ensure fragment is kept across redirects</title>
|
<title>Ensure fragment is kept across redirects</title>
|
||||||
|
<meta name="timeout" content="long">
|
||||||
|
<link rel=help href="https://www.w3.org/TR/cuap/#uri">
|
||||||
|
<link rel=help href="https://tools.ietf.org/html/rfc7231#section-7.1.2">
|
||||||
|
<link rel=help href="https://bugs.webkit.org/show_bug.cgi?id=158420">
|
||||||
|
<link rel=help href="https://bugs.webkit.org/show_bug.cgi?id=24175">
|
||||||
<script src="/common/get-host-info.sub.js"></script>
|
<script src="/common/get-host-info.sub.js"></script>
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
|
|
@ -0,0 +1,97 @@
|
||||||
|
<!doctype html>
|
||||||
|
<title>
|
||||||
|
legend and float and position: absolute/fixed when the display type of
|
||||||
|
the fieldset is flex.
|
||||||
|
</title>
|
||||||
|
<script src=/resources/testharness.js></script>
|
||||||
|
<script src=/resources/testharnessreport.js></script>
|
||||||
|
<style>
|
||||||
|
body { margin: 0; }
|
||||||
|
fieldset {
|
||||||
|
border: 10px solid;
|
||||||
|
display: flex;
|
||||||
|
margin: 0;
|
||||||
|
padding: 20px;
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
legend { height: 10px; }
|
||||||
|
#legend1 { float: left; }
|
||||||
|
#legend2 { float: right; }
|
||||||
|
#legend3 { position: absolute; }
|
||||||
|
#legend4 { position: fixed; }
|
||||||
|
</style>
|
||||||
|
<fieldset id=fieldset>
|
||||||
|
<div>div</div>
|
||||||
|
<legend id=legend1>legend1</legend>
|
||||||
|
<legend id=legend2>legend2</legend>
|
||||||
|
<legend id=legend3>legend3</legend>
|
||||||
|
<legend id=legend4>legend4</legend>
|
||||||
|
<legend id=legend5>legend5</legend>
|
||||||
|
</fieldset>
|
||||||
|
<script>
|
||||||
|
const fieldset = document.getElementById('fieldset');
|
||||||
|
const legends = document.getElementsByTagName('legend');
|
||||||
|
const [legend1, legend2, legend3, legend4, legend5] = legends;
|
||||||
|
const expectedTop = 0;
|
||||||
|
const expectedLeft = 10 + 20;
|
||||||
|
|
||||||
|
function assert_rendered_legend(legend) {
|
||||||
|
assert_equals(legend.offsetTop, expectedTop, `${legend.id}.offsetTop`);
|
||||||
|
assert_equals(legend.offsetLeft, expectedLeft, `${legend.id}.offsetLeft`);
|
||||||
|
for (const other of legends) {
|
||||||
|
if (other === legend) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (other.offsetTop === expectedTop && other.offsetLeft === expectedLeft) {
|
||||||
|
assert_unreached(`${other.id} should not be the "rendered legend"`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
test(t => {
|
||||||
|
assert_rendered_legend(legend5);
|
||||||
|
}, 'no dynamic changes');
|
||||||
|
|
||||||
|
test(t => {
|
||||||
|
const legend = document.createElement('legend');
|
||||||
|
t.add_cleanup(() => {
|
||||||
|
legend.remove();
|
||||||
|
});
|
||||||
|
legend.id = 'script-inserted';
|
||||||
|
legend.textContent = 'script-inserted legend';
|
||||||
|
fieldset.insertBefore(legend, legend1);
|
||||||
|
assert_rendered_legend(legend);
|
||||||
|
legend.remove();
|
||||||
|
assert_rendered_legend(legend5);
|
||||||
|
}, 'inserting a new legend and removing it again');
|
||||||
|
|
||||||
|
test(t => {
|
||||||
|
t.add_cleanup(() => {
|
||||||
|
legend1.id = 'legend1';
|
||||||
|
legend2.id = 'legend2';
|
||||||
|
});
|
||||||
|
legend2.id = '';
|
||||||
|
assert_rendered_legend(legend2);
|
||||||
|
legend1.id = '';
|
||||||
|
assert_rendered_legend(legend1);
|
||||||
|
legend1.id = 'legend1';
|
||||||
|
assert_rendered_legend(legend2);
|
||||||
|
legend2.id = 'legend2';
|
||||||
|
assert_rendered_legend(legend5);
|
||||||
|
}, 'dynamic changes to float');
|
||||||
|
|
||||||
|
test(t => {
|
||||||
|
t.add_cleanup(() => {
|
||||||
|
legend3.id = 'legend3';
|
||||||
|
legend4.id = 'legend4';
|
||||||
|
});
|
||||||
|
legend4.id = '';
|
||||||
|
assert_rendered_legend(legend4);
|
||||||
|
legend3.id = '';
|
||||||
|
assert_rendered_legend(legend3);
|
||||||
|
legend3.id = 'legend3';
|
||||||
|
assert_rendered_legend(legend4);
|
||||||
|
legend4.id = 'legend4';
|
||||||
|
assert_rendered_legend(legend5);
|
||||||
|
}, 'dynamic changes to position');
|
||||||
|
</script>
|
|
@ -37,20 +37,20 @@
|
||||||
|
|
||||||
const below_viewport_iframe_onload = t_below_viewport.step_func_done(() => {
|
const below_viewport_iframe_onload = t_below_viewport.step_func_done(() => {
|
||||||
assert_true(has_window_loaded,
|
assert_true(has_window_loaded,
|
||||||
"The window.load() event should have fired before " +
|
"The window load event should have fired before " +
|
||||||
"the below-viewport iframe loads");
|
"the below-viewport iframe loads");
|
||||||
});
|
});
|
||||||
|
|
||||||
// Must make this accessible to the srcdoc iframe's body.
|
// Must make this accessible to the srcdoc iframe's body.
|
||||||
window.below_viewport_srcdoc_iframe_subresource_onload = t_below_viewport_srcdoc.step_func(() => {
|
window.below_viewport_srcdoc_iframe_subresource_onload = t_below_viewport_srcdoc.step_func(() => {
|
||||||
assert_true(has_window_loaded,
|
assert_true(has_window_loaded,
|
||||||
"The window.load() event should have fired before " +
|
"The window load event should have fired before " +
|
||||||
"the below-viewport srcdoc iframe's subresource loads");
|
"the below-viewport srcdoc iframe's subresource loads");
|
||||||
});
|
});
|
||||||
|
|
||||||
const below_viewport_srcdoc_iframe_onload = t_below_viewport_srcdoc.step_func_done(() => {
|
const below_viewport_srcdoc_iframe_onload = t_below_viewport_srcdoc.step_func_done(() => {
|
||||||
assert_true(has_window_loaded,
|
assert_true(has_window_loaded,
|
||||||
"The window.load() event should have fired before " +
|
"The window load event should have fired before " +
|
||||||
"the below-viewport srcdoc iframe loads");
|
"the below-viewport srcdoc iframe loads");
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
@ -77,7 +77,7 @@
|
||||||
|
|
||||||
<!-- This async script loads very slowly in order to ensure that, if the
|
<!-- This async script loads very slowly in order to ensure that, if the
|
||||||
below_viewport* elements have started loading, it has a chance to finish
|
below_viewport* elements have started loading, it has a chance to finish
|
||||||
loading before window.load() happens, so that the test will dependably
|
loading before window load event fires, so that the test will dependably
|
||||||
fail in that case instead of potentially passing depending on how long
|
fail in that case instead of potentially passing depending on how long
|
||||||
different resource fetches take. -->
|
different resource fetches take. -->
|
||||||
<script async src="/common/slow.py"></script>
|
<script async src="/common/slow.py"></script>
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
window.addEventListener("load", t.step_func(function() {
|
window.addEventListener("load", t.step_func(function() {
|
||||||
assert_false(has_window_loaded,
|
assert_false(has_window_loaded,
|
||||||
"The window.load() event should only fire once.");
|
"The window load event should only fire once.");
|
||||||
has_window_loaded = true;
|
has_window_loaded = true;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@
|
||||||
assert_false(has_below_viewport_loaded,
|
assert_false(has_below_viewport_loaded,
|
||||||
"The in_viewport element should load only once.");
|
"The in_viewport element should load only once.");
|
||||||
assert_true(has_window_loaded,
|
assert_true(has_window_loaded,
|
||||||
"The window.load() event should have fired before " +
|
"The window load event should have fired before " +
|
||||||
"below_viewport loaded.");
|
"below_viewport loaded.");
|
||||||
has_below_viewport_loaded = true;
|
has_below_viewport_loaded = true;
|
||||||
});
|
});
|
||||||
|
@ -38,7 +38,7 @@
|
||||||
loading="lazy" onload="below_viewport_img_onload();">
|
loading="lazy" onload="below_viewport_img_onload();">
|
||||||
<script>
|
<script>
|
||||||
assert_false(has_window_loaded,
|
assert_false(has_window_loaded,
|
||||||
"The window.load() event should not fire before " +
|
"The window load event should not fire before " +
|
||||||
"changing below_viewport to loading='eager'.");
|
"changing below_viewport to loading='eager'.");
|
||||||
document.getElementById("below_viewport").loading = 'eager';
|
document.getElementById("below_viewport").loading = 'eager';
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -20,13 +20,13 @@
|
||||||
assert_false(has_in_viewport_loaded,
|
assert_false(has_in_viewport_loaded,
|
||||||
"The in_viewport element should load only once.");
|
"The in_viewport element should load only once.");
|
||||||
assert_true(has_window_loaded,
|
assert_true(has_window_loaded,
|
||||||
"The window.load() event should fire before in_viewport image loads.");
|
"The window load event should fire before in_viewport image loads.");
|
||||||
has_in_viewport_loaded = true;
|
has_in_viewport_loaded = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
window.addEventListener("load", t.step_func(function() {
|
window.addEventListener("load", t.step_func(function() {
|
||||||
assert_false(has_window_loaded,
|
assert_false(has_window_loaded,
|
||||||
"The window.load() event should only fire once.");
|
"The window load event should only fire once.");
|
||||||
has_window_loaded = true;
|
has_window_loaded = true;
|
||||||
}));
|
}));
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
|
|
||||||
window.addEventListener("load", t.step_func_done(function() {
|
window.addEventListener("load", t.step_func_done(function() {
|
||||||
assert_true(has_in_viewport_loaded, "The in_viewport element should have loaded before window.load().");
|
assert_true(has_in_viewport_loaded, "The in_viewport element should have loaded before window.load().");
|
||||||
assert_false(has_window_loaded, "The window.load() event should only fire once.");
|
assert_false(has_window_loaded, "The window load event should only fire once.");
|
||||||
has_window_loaded = true;
|
has_window_loaded = true;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
<!--
|
<!--
|
||||||
This async script loads very slowly in order to ensure that, if the
|
This async script loads very slowly in order to ensure that, if the
|
||||||
below_viewport element has started loading, it has a chance to finish
|
below_viewport element has started loading, it has a chance to finish
|
||||||
loading before window.load() happens, so that the test will dependably fail
|
loading before window load event fires, so that the test will dependably fail
|
||||||
in that case instead of potentially passing depending on how long different
|
in that case instead of potentially passing depending on how long different
|
||||||
resource fetches take.
|
resource fetches take.
|
||||||
-->
|
-->
|
||||||
|
|
|
@ -34,7 +34,6 @@ enum DisplayModeType {
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary ManifestImageResource : ImageResource {
|
dictionary ManifestImageResource : ImageResource {
|
||||||
USVString platform;
|
|
||||||
USVString purpose;
|
USVString purpose;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
// GENERATED CONTENT - DO NOT EDIT
|
||||||
|
// Content was automatically extracted by Reffy into reffy-reports
|
||||||
|
// (https://github.com/tidoust/reffy-reports)
|
||||||
|
// Source: Custom State Pseudo Class (https://wicg.github.io/custom-state-pseudo-class/)
|
||||||
|
|
||||||
|
partial interface ElementInternals {
|
||||||
|
[SameObject, PutForwards=value] readonly attribute DOMTokenList states;
|
||||||
|
};
|
|
@ -0,0 +1,15 @@
|
||||||
|
// GENERATED CONTENT - DO NOT EDIT
|
||||||
|
// Content was automatically extracted by Reffy into reffy-reports
|
||||||
|
// (https://github.com/tidoust/reffy-reports)
|
||||||
|
// Source: Deprecation Reporting (https://wicg.github.io/deprecation-reporting/)
|
||||||
|
|
||||||
|
[Exposed=(Window,Worker)]
|
||||||
|
interface DeprecationReportBody : ReportBody {
|
||||||
|
[Default] object toJSON();
|
||||||
|
readonly attribute DOMString id;
|
||||||
|
readonly attribute Date? anticipatedRemoval;
|
||||||
|
readonly attribute DOMString message;
|
||||||
|
readonly attribute DOMString? sourceFile;
|
||||||
|
readonly attribute unsigned long? lineNumber;
|
||||||
|
readonly attribute unsigned long? columnNumber;
|
||||||
|
};
|
|
@ -65,10 +65,15 @@ interface ReadableStreamDefaultReader {
|
||||||
readonly attribute Promise<void> closed;
|
readonly attribute Promise<void> closed;
|
||||||
|
|
||||||
Promise<void> cancel(optional any reason);
|
Promise<void> cancel(optional any reason);
|
||||||
Promise<any> read();
|
Promise<ReadableStreamDefaultReadResult> read();
|
||||||
void releaseLock();
|
void releaseLock();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
dictionary ReadableStreamDefaultReadResult {
|
||||||
|
any value;
|
||||||
|
boolean done;
|
||||||
|
};
|
||||||
|
|
||||||
[Exposed=(Window,Worker,Worklet)]
|
[Exposed=(Window,Worker,Worklet)]
|
||||||
interface ReadableStreamBYOBReader {
|
interface ReadableStreamBYOBReader {
|
||||||
constructor(ReadableStream stream);
|
constructor(ReadableStream stream);
|
||||||
|
@ -76,10 +81,15 @@ interface ReadableStreamBYOBReader {
|
||||||
readonly attribute Promise<void> closed;
|
readonly attribute Promise<void> closed;
|
||||||
|
|
||||||
Promise<void> cancel(optional any reason);
|
Promise<void> cancel(optional any reason);
|
||||||
Promise<any> read(ArrayBufferView view);
|
Promise<ReadableStreamBYOBReadResult> read(ArrayBufferView view);
|
||||||
void releaseLock();
|
void releaseLock();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
dictionary ReadableStreamBYOBReadResult {
|
||||||
|
ArrayBufferView value;
|
||||||
|
boolean done;
|
||||||
|
};
|
||||||
|
|
||||||
[Exposed=(Window,Worker,Worklet)]
|
[Exposed=(Window,Worker,Worklet)]
|
||||||
interface ReadableStreamDefaultController {
|
interface ReadableStreamDefaultController {
|
||||||
readonly attribute unrestricted double? desiredSize;
|
readonly attribute unrestricted double? desiredSize;
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Default properties on the <math> root</title>
|
||||||
|
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-top-level-math-element">
|
||||||
|
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#user-agent-stylesheet">
|
||||||
|
<meta name="assert" content="Test properties on the math root set by the UA stylesheet.">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<style>
|
||||||
|
math {
|
||||||
|
font-size: 100px;
|
||||||
|
}
|
||||||
|
.styled {
|
||||||
|
direction: rtl;
|
||||||
|
writing-mode: vertical-lr;
|
||||||
|
text-indent: .5em;
|
||||||
|
letter-spacing: .5em;
|
||||||
|
line-height: .5em;
|
||||||
|
word-spacing: .5em;
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="log"></div>
|
||||||
|
<div class="styled">
|
||||||
|
<math id="ua"></math>
|
||||||
|
<math id="author" class="styled"></math>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function getProperty(id, property) {
|
||||||
|
return window.getComputedStyle(document.getElementById(id))[property];
|
||||||
|
}
|
||||||
|
[
|
||||||
|
// Property name, value when specified from the UA, from the author.
|
||||||
|
["direction", "ltr", "rtl"],
|
||||||
|
["writing-mode", "horizontal-tb", "horizontal-tb"], // MathML Core level 1 only supports horizontal mode.
|
||||||
|
["text-indent", "0px", "50px"],
|
||||||
|
["letter-spacing", "normal", "50px"],
|
||||||
|
["line-height", "normal", "50px"],
|
||||||
|
["word-spacing", "0px", "50px"],
|
||||||
|
["font-style", "normal", "italic"],
|
||||||
|
["font-weight", "400", "700"]
|
||||||
|
].forEach(([name, ua_value, author_value]) => {
|
||||||
|
test(function () {
|
||||||
|
assert_equals(getProperty("ua", name), ua_value, "when specified from the UA sheet");
|
||||||
|
assert_equals(getProperty("author", name), author_value, "when specified by the author");
|
||||||
|
}, `Value of ${name} on the <math> root`);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1,4 +1,4 @@
|
||||||
flake8==3.8.3
|
flake8==3.8.3
|
||||||
pycodestyle==2.6.0
|
pycodestyle==2.6.0
|
||||||
pyflakes==2.2.0
|
pyflakes==2.2.0
|
||||||
pep8-naming==0.10.0
|
pep8-naming==0.11.1
|
||||||
|
|
|
@ -64,9 +64,11 @@
|
||||||
|
|
||||||
function getNoiseStreamOkCallback(localStream) {
|
function getNoiseStreamOkCallback(localStream) {
|
||||||
gFirstConnection = new RTCPeerConnection(null);
|
gFirstConnection = new RTCPeerConnection(null);
|
||||||
|
test.add_cleanup(() => gFirstConnection.close());
|
||||||
gFirstConnection.onicecandidate = onIceCandidateToFirst;
|
gFirstConnection.onicecandidate = onIceCandidateToFirst;
|
||||||
|
|
||||||
gSecondConnection = new RTCPeerConnection(null);
|
gSecondConnection = new RTCPeerConnection(null);
|
||||||
|
test.add_cleanup(() => gSecondConnection.close());
|
||||||
gSecondConnection.onicecandidate = onIceCandidateToSecond;
|
gSecondConnection.onicecandidate = onIceCandidateToSecond;
|
||||||
gSecondConnection.ontrack = onRemoteTrack;
|
gSecondConnection.ontrack = onRemoteTrack;
|
||||||
|
|
||||||
|
@ -146,4 +148,4 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>
|
||||||
|
Test AudioBufferSourceNode With Looping And Duration
|
||||||
|
</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/webaudio/resources/audit-util.js"></script>
|
||||||
|
<script src="/webaudio/resources/audit.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<script id="layout-test-code">
|
||||||
|
let audit = Audit.createTaskRunner();
|
||||||
|
audit.define('loop with duration', (task, should) => {
|
||||||
|
// Create the context
|
||||||
|
let context = new OfflineAudioContext(1, 4096, 48000);
|
||||||
|
|
||||||
|
// Create the sample buffer and fill the second half with 1
|
||||||
|
let buffer = context.createBuffer(1, 2048, context.sampleRate);
|
||||||
|
for(let i = 1024; i < 2048; i++) {
|
||||||
|
buffer.getChannelData(0)[i] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create the source and set its value
|
||||||
|
let source = context.createBufferSource();
|
||||||
|
source.loop = true;
|
||||||
|
source.loopStart = 1024 / context.sampleRate;
|
||||||
|
source.loopEnd = 2048 / context.sampleRate;
|
||||||
|
source.buffer = buffer;
|
||||||
|
source.connect(context.destination);
|
||||||
|
source.start(0, 1024 / context.sampleRate, 2048 / context.sampleRate);
|
||||||
|
// Render it!
|
||||||
|
context.startRendering()
|
||||||
|
.then(function(audioBuffer) {
|
||||||
|
for(let i = 0; i < 2048; i++) {
|
||||||
|
assert_equals(audioBuffer.getChannelData(0)[i], 1,
|
||||||
|
"audioBuffer did not loop as intended");
|
||||||
|
}
|
||||||
|
for(let i = 2048; i < 4096; i++) {
|
||||||
|
assert_equals(audioBuffer.getChannelData(0)[i], 0,
|
||||||
|
"audioBuffer did not respect duration");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(task.done());
|
||||||
|
});
|
||||||
|
|
||||||
|
audit.run();
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1,5 +1,6 @@
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<meta charset=utf-8>
|
<meta charset=utf-8>
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<title>RTCPeerConnection.prototype.createDataChannel</title>
|
<title>RTCPeerConnection.prototype.createDataChannel</title>
|
||||||
<script src=/resources/testharness.js></script>
|
<script src=/resources/testharness.js></script>
|
||||||
<script src=/resources/testharnessreport.js></script>
|
<script src=/resources/testharnessreport.js></script>
|
||||||
|
|
|
@ -122,6 +122,8 @@
|
||||||
assert_true(had_checking, 'state should pass checking before' +
|
assert_true(had_checking, 'state should pass checking before' +
|
||||||
' reaching connected or completed');
|
' reaching connected or completed');
|
||||||
t.done();
|
t.done();
|
||||||
|
} else if (iceConnectionState === 'failed') {
|
||||||
|
assert_unreached("ICE should not fail");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -165,6 +167,8 @@ async_test(t => {
|
||||||
'Expect ICE transport to be in connected state when' +
|
'Expect ICE transport to be in connected state when' +
|
||||||
' iceConnectionState is completed');
|
' iceConnectionState is completed');
|
||||||
t.done();
|
t.done();
|
||||||
|
} else if (iceConnectionState === 'failed') {
|
||||||
|
assert_unreached("ICE should not fail");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<meta charset=utf-8>
|
<meta charset=utf-8>
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<title>RTCPeerConnection.prototype.setRemoteDescription - add/remove remote tracks</title>
|
<title>RTCPeerConnection.prototype.setRemoteDescription - add/remove remote tracks</title>
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
|
|
@ -76,8 +76,10 @@ and ensures that an empty string sent by one is received by the second.
|
||||||
|
|
||||||
test.step(function() {
|
test.step(function() {
|
||||||
gFirstConnection = new RTCPeerConnection(null);
|
gFirstConnection = new RTCPeerConnection(null);
|
||||||
|
test.add_cleanup(() => gFirstConnection.close());
|
||||||
|
|
||||||
gSecondConnection = new RTCPeerConnection(null);
|
gSecondConnection = new RTCPeerConnection(null);
|
||||||
|
test.add_cleanup(() => gSecondConnection.close());
|
||||||
|
|
||||||
gFirstConnection.onicecandidate = exchangeIce(gSecondConnection);
|
gFirstConnection.onicecandidate = exchangeIce(gSecondConnection);
|
||||||
gSecondConnection.onicecandidate = exchangeIce(gFirstConnection);
|
gSecondConnection.onicecandidate = exchangeIce(gFirstConnection);
|
||||||
|
|
|
@ -81,10 +81,12 @@ This test uses data only, and thus does not require fake media devices.
|
||||||
// This function starts the test.
|
// This function starts the test.
|
||||||
test.step(function() {
|
test.step(function() {
|
||||||
gFirstConnection = new RTCPeerConnection(null);
|
gFirstConnection = new RTCPeerConnection(null);
|
||||||
|
test.add_cleanup(() => gFirstConnection.close());
|
||||||
gFirstConnection.onicecandidate = onIceCandidateToFirst;
|
gFirstConnection.onicecandidate = onIceCandidateToFirst;
|
||||||
gFirstConnection.oniceconnectionstatechange = onIceConnectionStateChange;
|
gFirstConnection.oniceconnectionstatechange = onIceConnectionStateChange;
|
||||||
|
|
||||||
gSecondConnection = new RTCPeerConnection(null);
|
gSecondConnection = new RTCPeerConnection(null);
|
||||||
|
test.add_cleanup(() => gSecondConnection.close());
|
||||||
gSecondConnection.onicecandidate = onIceCandidateToSecond;
|
gSecondConnection.onicecandidate = onIceCandidateToSecond;
|
||||||
|
|
||||||
// The createDataChannel is necessary and sufficient to make
|
// The createDataChannel is necessary and sufficient to make
|
||||||
|
|
|
@ -113,10 +113,12 @@
|
||||||
// This function starts the test.
|
// This function starts the test.
|
||||||
test.step(function() {
|
test.step(function() {
|
||||||
gFirstConnection = new RTCPeerConnection(null);
|
gFirstConnection = new RTCPeerConnection(null);
|
||||||
|
test.add_cleanup(() => gFirstConnection.close());
|
||||||
gFirstConnection.onicecandidate = onIceCandidateToFirst;
|
gFirstConnection.onicecandidate = onIceCandidateToFirst;
|
||||||
gFirstConnection.oniceconnectionstatechange = onIceConnectionStateChange;
|
gFirstConnection.oniceconnectionstatechange = onIceConnectionStateChange;
|
||||||
|
|
||||||
gSecondConnection = new RTCPeerConnection(null);
|
gSecondConnection = new RTCPeerConnection(null);
|
||||||
|
test.add_cleanup(() => gSecondConnection.close());
|
||||||
gSecondConnection.onicecandidate = onIceCandidateToSecond;
|
gSecondConnection.onicecandidate = onIceCandidateToSecond;
|
||||||
gSecondConnection.oniceconnectionstatechange = onIceConnectionStateChange;
|
gSecondConnection.oniceconnectionstatechange = onIceConnectionStateChange;
|
||||||
|
|
||||||
|
|
|
@ -66,10 +66,12 @@ This test uses data only, and thus does not require fake media devices.
|
||||||
// This function starts the test.
|
// This function starts the test.
|
||||||
test.step(function() {
|
test.step(function() {
|
||||||
gFirstConnection = new RTCPeerConnection(null);
|
gFirstConnection = new RTCPeerConnection(null);
|
||||||
|
test.add_cleanup(() => gFirstConnection.close());
|
||||||
gFirstConnection.onicecandidate = onIceCandidateToFirst;
|
gFirstConnection.onicecandidate = onIceCandidateToFirst;
|
||||||
gFirstConnection.oniceconnectionstatechange = onIceConnectionStateChange;
|
gFirstConnection.oniceconnectionstatechange = onIceConnectionStateChange;
|
||||||
|
|
||||||
gSecondConnection = new RTCPeerConnection(null);
|
gSecondConnection = new RTCPeerConnection(null);
|
||||||
|
test.add_cleanup(() => gSecondConnection.close());
|
||||||
gSecondConnection.onicecandidate = onIceCandidateToSecond;
|
gSecondConnection.onicecandidate = onIceCandidateToSecond;
|
||||||
gSecondConnection.oniceconnectionstatechange = onIceConnectionStateChange;
|
gSecondConnection.oniceconnectionstatechange = onIceConnectionStateChange;
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
|
|
||||||
function getNoiseStreamOkCallback(localStream) {
|
function getNoiseStreamOkCallback(localStream) {
|
||||||
gFirstConnection = new RTCPeerConnection(null);
|
gFirstConnection = new RTCPeerConnection(null);
|
||||||
|
test.add_cleanup(() => gFirstConnection.close());
|
||||||
gFirstConnection.onicecandidate = onIceCandidateToFirst;
|
gFirstConnection.onicecandidate = onIceCandidateToFirst;
|
||||||
localStream.getTracks().forEach(function(track) {
|
localStream.getTracks().forEach(function(track) {
|
||||||
gFirstConnection.addTrack(track, localStream);
|
gFirstConnection.addTrack(track, localStream);
|
||||||
|
@ -56,6 +57,7 @@
|
||||||
|
|
||||||
function receiveCall(offerSdp) {
|
function receiveCall(offerSdp) {
|
||||||
gSecondConnection = new RTCPeerConnection(null);
|
gSecondConnection = new RTCPeerConnection(null);
|
||||||
|
test.add_cleanup(() => gSecondConnection.close());
|
||||||
gSecondConnection.onicecandidate = onIceCandidateToSecond;
|
gSecondConnection.onicecandidate = onIceCandidateToSecond;
|
||||||
gSecondConnection.ontrack = onRemoteTrack;
|
gSecondConnection.ontrack = onRemoteTrack;
|
||||||
|
|
||||||
|
|
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