Update web-platform-tests to revision e3698c7bb3c309df69134e9bc0a375f00535e226

This commit is contained in:
WPT Sync Bot 2020-07-07 08:19:56 +00:00
parent 1b38197812
commit e447ba9856
102 changed files with 1364 additions and 221 deletions

View file

@ -1,4 +0,0 @@
[hit-test-floats-003.html]
[Miss float below something else]
expected: FAIL

View file

@ -0,0 +1,4 @@
[hit-test-floats-005.html]
[Miss clipped float]
expected: FAIL

View file

@ -0,0 +1,4 @@
[detach-abspos-before-layout.html]
[No crash or DCHECK failure]
expected: FAIL

View file

@ -2,3 +2,6 @@
[Hit test intersecting scaled box]
expected: FAIL
[Hit test within unscaled box]
expected: FAIL

View file

@ -1,4 +0,0 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -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

View file

@ -312,27 +312,24 @@
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
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]
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]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
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

View file

@ -53,3 +53,6 @@
[combined text/javascript ]
expected: FAIL
[separate text/javascript x/x]
expected: FAIL

View file

@ -1,10 +1,4 @@
[split-cache.tentative.html]
[HTTP Cache - Partioning by top-level origin 1]
expected: FAIL
[HTTP Cache - Partioning by top-level origin 3]
expected: FAIL
[split-cache.html]
[HTTP cache is not shared between same-site frames with cross-site top-level frames]
expected: FAIL

View file

@ -11,9 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL
[X-Content-Type-Options%3A%20%2Cnosniff]
expected: FAIL
[Content-Type-Options%3A%20nosniff]
[X-Content-Type-Options%3A%20%22nosniFF%22]
expected: FAIL

View file

@ -1,4 +0,0 @@
[traverse_the_history_4.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -171,6 +171,3 @@
[XHTML img usemap="#hash-id"]
expected: FAIL
[HTML (standards) IMG usemap="no-hash-name"]
expected: FAIL

View file

@ -1,5 +1,5 @@
[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]
expected: TIMEOUT

View file

@ -1,5 +1,5 @@
[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]
expected: TIMEOUT

View file

@ -1,5 +1,5 @@
[iframe_sandbox_popups_nonescaping-1.html]
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,5 +1,5 @@
[iframe_sandbox_popups_nonescaping-2.html]
expected: CRASH
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,5 +1,5 @@
[iframe_sandbox_popups_nonescaping-3.html]
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,4 +0,0 @@
[form-double-submit.html]
[default submit action should supersede onclick submit()]
expected: FAIL

View file

@ -1,2 +0,0 @@
[script-onerror-insertion-point-2.html]
expected: TIMEOUT

View file

@ -1,5 +1,5 @@
[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)]
expected: TIMEOUT

View file

@ -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]
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

View file

@ -0,0 +1,5 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -1,5 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -11875,7 +11875,7 @@
]
],
"cursor-auto-007.html": [
"6cf1495a02c42c49b1407fef0a22eb363cdf7d2b",
"0d355ad0d953dce9be2f42340d331f442af8fac2",
[
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": [
"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": [
"1381f53cb0c0aefc82a91a232b712d18be625b97",
[
@ -249992,7 +250031,7 @@
[]
],
"get-host-info.sub.js": [
"1c28a7f476f67d513e4627b6133d0c2e0ffc867a",
"8f37d557583b99235b7a1fa903e54e96f90b9870",
[]
],
"get-host-info.sub.js.headers": [
@ -292194,6 +292233,10 @@
"135bc04d8ee5c5e29045488728cc276f24c69832",
[]
],
"display-first-line-002-ref.html": [
"e82f6153a22befdbd33e2f106e9a8258f174d571",
[]
],
"display-flow-root-001-ref.html": [
"fcb5ac277ee72f8dd4d70d66b7b6ce736225940e",
[]
@ -302690,6 +302733,10 @@
"f718ea6abfbab54333ba674ff0dcd320d8672bcd",
[]
],
"clip-path-document-element-ref.html": [
"4608e54b2082aef805dce8b5bbff2c2cc82c41e9",
[]
],
"clip-path-ellipse-ref.html": [
"5adc91a5c00f27f0d3225c99a6c2534b5b868a8d",
[]
@ -321701,7 +321748,7 @@
],
"data": {
"README.md": [
"606c67182ca35bccc65fc073d9cb8edfd2d5d17b",
"2ac414b280275ea7a5ad1f376b6fe65d1bb897fe",
[]
],
"backcolor.js": [
@ -321721,7 +321768,7 @@
[]
],
"delete.js": [
"db53a3643f600da683a1df2f49e6e55d5b1e6d3d",
"00b61178c74b1704cfe18c7b3f00e98937ae98b2",
[]
],
"fontname.js": [
@ -321741,7 +321788,7 @@
[]
],
"forwarddelete.js": [
"2b8829e6721b521b19af3c71740dd5b73c84fd36",
"b636a95e8a0e84608620e72fb7279a62de677477",
[]
],
"hilitecolor.js": [
@ -321769,7 +321816,7 @@
[]
],
"insertlinebreak.js": [
"540b1b1e411945cfe2a95e59ccb0d66e0a0c8750",
"a29862ffd360ea01901fbe9c85dc87d1fc13b67d",
[]
],
"insertorderedlist.js": [
@ -321777,11 +321824,11 @@
[]
],
"insertparagraph.js": [
"fcf9e855e1c311de2cee26e6f6d117b2da5f1fb4",
"2ffab8fd353c7ba7a20cfa1b5e2a3a0b1ab56c9b",
[]
],
"inserttext.js": [
"4012510fcb6389a2f17647d5febb87b012ce883f",
"102da09211b6de90a49cd60410f8dcec16d08bb1",
[]
],
"insertunorderedlist.js": [
@ -321863,7 +321910,7 @@
[]
],
"tests.js": [
"a03a68ed8dc80a94c79023247b14ad58c5f2e2d7",
"c18aef136b928b92ac90448a8181bc09c881d775",
[]
]
}
@ -337958,7 +338005,7 @@
[]
],
"appmanifest.idl": [
"cf30b6127682f7f7f6a380cd1abafc1b2ad2c770",
"926a4fc2022e71c28aa4a2ae3d1adc12104ee1ab",
[]
],
"audio-output.idl": [
@ -338101,6 +338148,14 @@
"b7d9c33d596c3882e14ffa2fa1dee99e087ecedf",
[]
],
"custom-state-pseudo-class.idl": [
"8fcd287acd337664d0878aaaac46453aa54f224d",
[]
],
"deprecation-reporting.idl": [
"e62711936b5ec9e6ee93e85c3e52e07462406957",
[]
],
"device-memory.idl": [
"f664013ddefea7bc8950f7604c06f53c1c1aac48",
[]
@ -338442,7 +338497,7 @@
[]
],
"streams.idl": [
"4dddbf41cbf7bca67b42f5bc6e58b0ffcd2e309c",
"35f558f624a83f3e2526e89b9be909a7883ecb08",
[]
],
"text-detection-api.tentative.idl": [
@ -349062,7 +349117,7 @@
]
},
"requirements_flake8.txt": [
"ae3e4f4b5a64e692fa9c2992f12dcaa0ca582cc2",
"f97916e03e97a742c8f8f664f8c4ac24c7e1327a",
[]
],
"requirements_mypy.txt": [
@ -386128,6 +386183,13 @@
{}
]
],
"needs-layout-transform.html": [
"8a307b3b68d216521f87698417360a5657b92d79",
[
null,
{}
]
],
"vertical-align-top-bottom-001.html": [
"2e03bc0d2fbed51589545b0b62d0ccb3d161556d",
[
@ -386237,6 +386299,13 @@
{}
]
],
"detach-abspos-before-layout.html": [
"27ee59ccc5073597ccba01b83ef8a590a8f751b9",
[
null,
{}
]
],
"inline-static-position-001.html": [
"b627fbcab58d0a988de8ef572f64a67c2929536b",
[
@ -389700,6 +389769,20 @@
{}
]
],
"display-with-float-dynamic.html": [
"7cc2fefcc42f4fc0aa7b72fabbf2fc8df6c38048",
[
null,
{}
]
],
"display-with-float.html": [
"49f94799d93b58c77289d4ac35cb8b7d3239b4fa",
[
null,
{}
]
],
"inheritance.html": [
"bfd072651cb6ec82cca7d9be5b6768afbc39fca0",
[
@ -392833,7 +392916,7 @@
]
],
"grid-baseline-004.html": [
"baabc70a3f477321f76dff59cfa2e73bcff8e165",
"7c3e46cfdbde7c982f76526d4b98611abd311e1e",
[
null,
{}
@ -394027,28 +394110,28 @@
]
],
"grid-auto-fill-columns-001.html": [
"ed32ee55d5be7f19f468e2f772f3eb2fbbb2cde5",
"83ab583797dceb0a78f3692999606932706be67d",
[
null,
{}
]
],
"grid-auto-fill-rows-001.html": [
"afce3f5fa91a609f5a4f27f666e97565f4fbc8ee",
"d3078b7b3ad9ac633de08c4db0e66e784976db6b",
[
null,
{}
]
],
"grid-auto-fit-columns-001.html": [
"b1dab7e32f9dd98f14af9ff885cc688b465ed384",
"524bb209a569f066e994cfe3174ac9f2d2fd743a",
[
null,
{}
]
],
"grid-auto-fit-rows-001.html": [
"7619d9e023e2a7cbc9e7d5fb5d49730046bfbcf3",
"fef304b2188c07a69c9dd5d07dbb316dc1a18b8e",
[
null,
{}
@ -394216,7 +394299,7 @@
]
],
"grid-support-grid-template-areas-001.html": [
"da29040b31b9780b34345a0173a4b7db5159a2df",
"ed4c500a1986008033acd16c435c75f02ba8751e",
[
null,
{}
@ -394684,7 +394767,7 @@
]
],
"flex-and-intrinsic-sizes-001.html": [
"5144450dd8cb6106768d55088bd4900405be05ce",
"02e34071ec4d0f43378f17c3a2255295f267ac88",
[
null,
{}
@ -394788,6 +394871,13 @@
{}
]
],
"grid-flex-track-intrinsic-sizes-003.html": [
"81a5d14131078c214b59f236838043870dda2512",
[
null,
{}
]
],
"grid-intrinsic-size-with-orthogonal-items.html": [
"4dfcd126d10e86bb9b2d2bb6bfc1f668f839c9ba",
[
@ -407910,6 +408000,13 @@
{}
]
],
"rem-unit-root-element.html": [
"cfd7af17c4f0463e3df02b8d91a1f96c70511408",
[
null,
{}
]
],
"rgba-011.html": [
"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": {
"exception-thrown-bad-color.tentative.html": [
"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.https.any.js": [
"4fe6f04ebc959e6468af5296ebc677c70a7cf170",
@ -433478,7 +433630,7 @@
}
]
],
"split-cache.tentative.html": [
"split-cache.html": [
"4b04c9ff79bf951cce993c6dbcc556dc1e505c41",
[
null,
@ -433967,10 +434119,12 @@
]
],
"preserve-fragment.html": [
"72ed24c837f143191a08d6df69544c0601385863",
"682539a7445f2da6ec27d4b6a217d743c5c91915",
[
null,
{}
{
"timeout": "long"
}
]
]
},
@ -457973,6 +458127,13 @@
{}
]
],
"flex-legend-float-abspos.html": [
"f6eead471cc076d20839a0e95be01b7742f199fa",
[
null,
{}
]
],
"legend-align-justify-self.html": [
"29df29d17778a9d3d592c5e942f093a44f419b3c",
[
@ -462008,7 +462169,7 @@
]
],
"iframe-loading-lazy.tentative.html": [
"1a5f8f7407e3403888239325c0603b5ec4101ffd",
"51b442695e01e9496ee4f5754023f722e6636f36",
[
null,
{}
@ -462670,7 +462831,7 @@
]
],
"image-loading-lazy-below-viewport-dynamic.html": [
"e27212cfd79c19c531efe44167f94a0730790a4b",
"7fc2c74214739206cfec69b1617d59a2f36b3b3d",
[
null,
{}
@ -462705,7 +462866,7 @@
]
],
"image-loading-lazy-in-viewport-dynamic.html": [
"c9baceda5874285cd4a140786baef20598e7ee0e",
"982f09b8298bccee48b24c1774ef46a5d702dd22",
[
null,
{}
@ -462733,7 +462894,7 @@
]
],
"image-loading-lazy-multicol.html": [
"1458fb44b7849fed9792170638381a11a45d22ab",
"e906681932dbe616eb58e2f889878b2f2fdfaa4e",
[
null,
{}
@ -475537,6 +475698,13 @@
{}
]
],
"default-properties-on-the-math-root.html": [
"80a09774a7777fa104c861086e0f5ac971f07f05",
[
null,
{}
]
],
"display-contents.html": [
"aeaa28da908816ad39619d9a47bbb43a3116bbe9",
[
@ -513426,7 +513594,7 @@
]
],
"request-video-frame-callback-webrtc.https.html": [
"b6131d6a808759346aa54b9e400e535b6c3ca29c",
"ce5b5ad6be699a917b3dce5559cdbfa8e334127d",
[
null,
{}
@ -518268,6 +518436,13 @@
{}
]
],
"audiobuffersource-duration-loop.html": [
"faa70e11c4774991061e1d85a4a4b774e7368f5a",
[
null,
{}
]
],
"audiobuffersource-ended.html": [
"b9922f61ef399bf558a2f6d3c61154b9f14a512f",
[
@ -521261,10 +521436,12 @@
]
],
"RTCPeerConnection-createDataChannel.html": [
"3d2169dffac65ffbc81355b33c4c904bf5e3f067",
"87867664b58a6787bd96cfb85559b4f1171e263f",
[
null,
{}
{
"timeout": "long"
}
]
],
"RTCPeerConnection-createOffer.html": [
@ -521312,7 +521489,7 @@
]
],
"RTCPeerConnection-iceConnectionState.https.html": [
"851ce884d6ea12bf60761ef23f78cf197d594372",
"d3126065b99778f32b5e313211085d55c064fe1e",
[
null,
{
@ -521516,10 +521693,12 @@
]
],
"RTCPeerConnection-setRemoteDescription-tracks.https.html": [
"59761c4c4bdca57141272b092fe56a917b612c7b",
"d2ee646e2c17c7d0aa1d632882838a07a6d5a685",
[
null,
{}
{
"timeout": "long"
}
]
],
"RTCPeerConnection-setRemoteDescription.html": [
@ -521761,14 +521940,14 @@
]
],
"datachannel-emptystring.html": [
"6af436a1d1bd4fb0c3bb8065f48475582c87e33a",
"456bac7367e6f9034f83bbee6998313b789b8c0d",
[
null,
{}
]
],
"getstats.html": [
"979e99c0b27cc39af3f3a050df16a70b8f1221e8",
"0950a374c3cd8a44cbb8bffc2991fc6dc95417c8",
[
null,
{}
@ -521841,14 +522020,14 @@
]
},
"no-media-call.html": [
"dbe6a0dd4c210b2fe930e574fe5d638968805dca",
"b1eba08d0b433c60c6332199cd35294847028a0c",
[
null,
{}
]
],
"promises-call.html": [
"ceb6ab258ccbaaebb39b63742a48a379db35bc46",
"8b9a27554973531e8528406a52d38b7c55932f3c",
[
null,
{}
@ -521968,14 +522147,14 @@
]
],
"simplecall-no-ssrcs.https.html": [
"87f8d939a5a2f80fa9fae137cf34d6e99ecf391a",
"5160451f012e642dd5697e034a19a7f8895421ea",
[
null,
{}
]
],
"simplecall.https.html": [
"291437a526582d13db6e04fa39c152ce9ed5859a",
"ffe043b6a237fae1a4f70e2cfac495a2a6132c28",
[
null,
{}

View file

@ -1,4 +0,0 @@
[hit-test-floats-003.html]
[Miss float below something else]
expected: FAIL

View file

@ -0,0 +1,4 @@
[hit-test-floats-005.html]
[Miss clipped float]
expected: FAIL

View file

@ -0,0 +1,4 @@
[detach-abspos-before-layout.html]
[No crash or DCHECK failure]
expected: FAIL

View file

@ -2,3 +2,6 @@
[Hit test intersecting scaled box]
expected: FAIL
[Hit test within unscaled box]
expected: FAIL

View file

@ -1,4 +0,0 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -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

View file

@ -312,27 +312,24 @@
[fetch(): separate response Content-Type: text/plain ]
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]
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]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
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

View file

@ -53,3 +53,6 @@
[combined text/javascript ]
expected: FAIL
[separate text/javascript x/x]
expected: FAIL

View 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

View file

@ -11,9 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL
[X-Content-Type-Options%3A%20%2Cnosniff]
expected: FAIL
[Content-Type-Options%3A%20nosniff]
[X-Content-Type-Options%3A%20%22nosniFF%22]
expected: FAIL

View file

@ -1,4 +0,0 @@
[traverse_the_history_4.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -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

View file

@ -172,6 +172,3 @@
[XHTML img usemap="http://example.org/#garbage-before-hash-id"]
expected: FAIL
[HTML (standards) IMG usemap="no-hash-name"]
expected: FAIL

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_escaping-1.html]
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]
expected: TIMEOUT

View file

@ -1,5 +1,5 @@
[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]
expected: TIMEOUT

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-1.html]
type: testharness
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-2.html]
type: testharness
expected: CRASH
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-3.html]
type: testharness
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,4 +0,0 @@
[form-double-submit.html]
[default submit action should supersede onclick submit()]
expected: FAIL

View file

@ -1,2 +0,0 @@
[script-onerror-insertion-point-2.html]
expected: TIMEOUT

View file

@ -1,5 +1,5 @@
[ignore-opens-during-unload.window.html]
expected: TIMEOUT
expected: CRASH
[ignore-opens-during-unload]
expected: FAIL

View file

@ -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]
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

View file

@ -0,0 +1,5 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -1,5 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -7,6 +7,7 @@ function get_host_info() {
var HTTP_PORT = '{{ports[http][0]}}';
var HTTP_PORT2 = '{{ports[http][1]}}';
var HTTPS_PORT = '{{ports[https][0]}}';
var HTTPS_PORT2 = '{{ports[https][1]}}';
var PROTOCOL = self.location.protocol;
var IS_HTTPS = (PROTOCOL == "https:");
var HTTP_PORT_ELIDED = HTTP_PORT == "80" ? "" : (":" + HTTP_PORT);
@ -22,6 +23,7 @@ function get_host_info() {
HTTP_PORT: HTTP_PORT,
HTTP_PORT2: HTTP_PORT2,
HTTPS_PORT: HTTPS_PORT,
HTTPS_PORT2: HTTPS_PORT2,
ORIGINAL_HOST: ORIGINAL_HOST,
REMOTE_HOST: REMOTE_HOST,

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -35,9 +35,17 @@ body { margin: 0; }
}
.item {
height: 25px;
border-color: black;
border-color: gray;
border-style: solid;
}
.grid.grid > * {
background: silver;
background: rgba(0,0,0,0.3);
}
.target.target {
background: blue;
border-color: navy;
}
.style1 {
border-width: 5px 0px 10px;
padding: 10px 0px 20px;
@ -79,124 +87,134 @@ body { margin: 0; }
</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>
<div class="container" data-expected-width="480" data-expected-height="120">
<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 style3 firstRowThirdColumn" data-offset-x="100" data-offset-y="20"></div>
</div>
<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 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>
<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 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>
<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>
<div class="container" data-expected-width="480" data-expected-height="120">
<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 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 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 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 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 style3 firstRowFirstColumn" data-offset-x="0" data-offset-y="20"></div>
</div>
</div>
<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>
<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="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="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 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="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div>
</div>
<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="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
</div>
</div>
<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>
<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="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="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></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>
<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="firstRowFirstColumn alignSelfBaseline" style="width: 50px; height: 50px;" data-offset-x="0" data-offset-y="0"></div>
<div class="bothRowFirstColumn style2" style="align-self: last baseline" data-offset-x="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>
<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="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>
<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>
<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="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="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
</div>
<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="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></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>
<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>
<div class="container" data-expected-width="480" data-expected-height="300">
<div class="grid twoRows" data-offset-x="0" data-offset-y="190">
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0"></div>
<div class="container" data-expected-width="480" data-expected-height="250">
<div id=first class="grid twoRows" data-offset-x="0" data-offset-y="80">
<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="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div>
</div>
<div class="grid twoRows" data-offset-x="160" data-offset-y="150">
<div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></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 id=second class="grid threeRows" data-offset-x="160" data-offset-y="55">
<div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="100"></div>
<div class="secondRowBothColumn" data-offset-x="0" data-offset-y="65"></div>
<div class="secondRowSecondColumn style3 alignSelfBaseline target" id="first" data-offset-x="0" data-offset-y="80"></div>
</div>
<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="secondRowFirstColumn target" data-offset-x="0" data-offset-y="60"></div>
<div class="secondRowBothColumn" data-offset-x="0" data-offset-y="75"></div>
</div>
</div>

View file

@ -23,13 +23,16 @@
}
.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); }
.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]; }
.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]; }
.item { background-color: cyan; }
.item { background: cyan; }
.gap { grid-column-gap: 20px; }
@ -45,7 +48,19 @@
<p>This test checks that repeat(auto-fill, ) syntax works as expected.</p>
<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 class="grid gridOnlyAutoRepeat">

View file

@ -28,18 +28,20 @@
}
.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); }
.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]; }
.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]; }
.item { background-color: blue; }
.item { background: blue; }
.item:nth-child(2) { background: green; }
.item:nth-child(3) { background: orange; }
.gap { grid-row-gap: 20px; }
</style>
<script src="/resources/testharness.js"></script>
@ -52,7 +54,19 @@
<p>This test checks that repeat(auto-fill, ) syntax works as expected.</p>
<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 class="grid gridOnlyAutoRepeat">

View file

@ -1,5 +1,7 @@
<!DOCTYPE html>
<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="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">
@ -24,6 +26,9 @@
}
.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); }
.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]; }
@ -31,8 +36,8 @@
.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)); }
.item { background-color: cyan; }
.item:nth-child(2n) { background-color: green; }
.item { background: cyan; }
.item:nth-child(2n) { background: green; }
.gap { grid-column-gap: 20px; }
@ -48,7 +53,19 @@
<p>This test checks that repeat(auto-fit, ) syntax works as expected.</p>
<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 class="grid gridOnlyAutoRepeat">

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<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/#propdef-grid-auto-columns">
<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]); }
.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); }
.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]; }
.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]; }
.item { background-color: cyan; }
.item:nth-child(2n) { background-color: green; }
.item { background: cyan; }
.item:nth-child(2n) { background: green; }
.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>
<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="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>

View file

@ -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', '"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"', '"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"\n"c d"', '"a b" "c d"');
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 ." "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"', '".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"');
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 ."', '"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 ."');
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 ."', '"...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 ."');
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', '". 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"', '"..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"');
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"', '"... ...." "a a"']);
TestingUtils.testGridTemplateAreas('grid', '"... ...." "a a"', '". ." "a a"');
// Reset values.
document.getElementById('grid').style.gridTemplateAreas = '';

View file

@ -44,6 +44,12 @@ div { font: 10px/1 Ahem; }
</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="grid max-content" data-expected-width="70" data-expected-height="10">
<div>XXX XXX</div>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -36,7 +36,7 @@
.unselectable {
display: block;
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;
}
}

View file

@ -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>

View file

@ -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.
});
}
);

View file

@ -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
});
}
);

View file

@ -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
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 ##
["foo[bar]baz",

View file

@ -2494,5 +2494,65 @@ var browserTests = [
[["delete",""]],
"<div>foobar</div>",
[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,""]}],
]

View file

@ -2379,5 +2379,65 @@ var browserTests = [
[["forwarddelete",""]],
"<div>foobar</div>",
[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,""]}],
]

View file

@ -834,5 +834,40 @@ var browserTests = [
[["insertlinebreak",""]],
"<div class=\"a\" id=\"x\"><p class=\"b\" id=\"y\">foo<br>{}bar</p></div>",
[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,""]}],
]

View file

@ -1886,4 +1886,48 @@ var browserTests = [
"<div contenteditable=\"false\"><foo-bar contenteditable=\"\"><div>foo</div><div>bar</div></foo-bar></div>",
[true,true],
{"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,""]}],
]

View file

@ -1189,5 +1189,60 @@ var browserTests = [
[["inserttext","a"]],
"<blockquote><font color=\"blue\">a[]</font></blockquote>",
[true],
{"inserttext":[false,false,"",false,false,""]}]
{"inserttext":[false,false,"",false,false,""]}],
["<div>[] abc</div>",
[["inserttext"," "]],
"<div>&nbsp;abc</div>",
[true],
{"inserttext":[false,false,"",false,false,""]}],
["<div> []abc</div>",
[["inserttext"," "]],
"<div>&nbsp;abc</div>",
[true],
{"inserttext":[false,false,"",false,false,""]}],
["<div>[] abc</div>",
[["inserttext"," "]],
"<div>&nbsp;abc</div>",
[true],
{"inserttext":[false,false,"",false,false,""]}],
["<div> [] abc</div>",
[["inserttext"," "]],
"<div>&nbsp;abc</div>",
[true],
{"inserttext":[false,false,"",false,false,""]}],
["<div> []abc</div>",
[["inserttext"," "]],
"<div>&nbsp;abc</div>",
[true],
{"inserttext":[false,false,"",false,false,""]}],
["<div>abc[] </div>",
[["inserttext"," "]],
["<div>abc&nbsp;</div>",
"<div>abc <br></div>"],
[true],
{"inserttext":[false,false,"",false,false,""]}],
["<div>abc []</div>",
[["inserttext"," "]],
["<div>abc&nbsp;</div>",
"<div>abc <br></div>"],
[true],
{"inserttext":[false,false,"",false,false,""]}],
["<div>abc[] </div>",
[["inserttext"," "]],
["<div>abc&nbsp;</div>",
"<div>abc <br></div>"],
[true],
{"inserttext":[false,false,"",false,false,""]}],
["<div>abc [] </div>",
[["inserttext"," "]],
["<div>abc&nbsp;</div>",
"<div>abc <br></div>"],
[true],
{"inserttext":[false,false,"",false,false,""]}],
["<div>abc []</div>",
[["inserttext"," "]],
["<div>abc&nbsp;</div>",
"<div>abc <br></div>"],
[true],
{"inserttext":[false,false,"",false,false,""]}],
]

View file

@ -5667,9 +5667,19 @@ function runConformanceTest(browserTest) {
subsetTest(test, function() {
assert_equals(exception, null, "Setup must not throw an exception");
assert_equals(testDiv.innerHTML,
browserTest[2].replace(/[\[\]{}]/g, ""),
"Unexpected innerHTML (after normalizing inline style)");
if (Array.isArray(browserTest[2])) {
var expectedInnerHTMLArray = [];
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");
for (var command in expectedQueryResults) {

View file

@ -3,6 +3,11 @@
<head>
<meta charset="UTF-8">
<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="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

View file

@ -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>

View file

@ -37,20 +37,20 @@
const below_viewport_iframe_onload = t_below_viewport.step_func_done(() => {
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");
});
// Must make this accessible to the srcdoc iframe's body.
window.below_viewport_srcdoc_iframe_subresource_onload = t_below_viewport_srcdoc.step_func(() => {
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");
});
const below_viewport_srcdoc_iframe_onload = t_below_viewport_srcdoc.step_func_done(() => {
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");
});
</script>
@ -77,7 +77,7 @@
<!-- 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
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
different resource fetches take. -->
<script async src="/common/slow.py"></script>

View file

@ -18,7 +18,7 @@
window.addEventListener("load", t.step_func(function() {
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;
}));
@ -26,7 +26,7 @@
assert_false(has_below_viewport_loaded,
"The in_viewport element should load only once.");
assert_true(has_window_loaded,
"The window.load() event should have fired before " +
"The window load event should have fired before " +
"below_viewport loaded.");
has_below_viewport_loaded = true;
});
@ -38,7 +38,7 @@
loading="lazy" onload="below_viewport_img_onload();">
<script>
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'.");
document.getElementById("below_viewport").loading = 'eager';
</script>

View file

@ -20,13 +20,13 @@
assert_false(has_in_viewport_loaded,
"The in_viewport element should load only once.");
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;
});
window.addEventListener("load", t.step_func(function() {
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;
}));
</script>

View file

@ -20,7 +20,7 @@
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_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;
}));
@ -37,7 +37,7 @@
<!--
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
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
resource fetches take.
-->

View file

@ -34,7 +34,6 @@ enum DisplayModeType {
};
dictionary ManifestImageResource : ImageResource {
USVString platform;
USVString purpose;
};

View file

@ -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;
};

View file

@ -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;
};

View file

@ -65,10 +65,15 @@ interface ReadableStreamDefaultReader {
readonly attribute Promise<void> closed;
Promise<void> cancel(optional any reason);
Promise<any> read();
Promise<ReadableStreamDefaultReadResult> read();
void releaseLock();
};
dictionary ReadableStreamDefaultReadResult {
any value;
boolean done;
};
[Exposed=(Window,Worker,Worklet)]
interface ReadableStreamBYOBReader {
constructor(ReadableStream stream);
@ -76,10 +81,15 @@ interface ReadableStreamBYOBReader {
readonly attribute Promise<void> closed;
Promise<void> cancel(optional any reason);
Promise<any> read(ArrayBufferView view);
Promise<ReadableStreamBYOBReadResult> read(ArrayBufferView view);
void releaseLock();
};
dictionary ReadableStreamBYOBReadResult {
ArrayBufferView value;
boolean done;
};
[Exposed=(Window,Worker,Worklet)]
interface ReadableStreamDefaultController {
readonly attribute unrestricted double? desiredSize;

View file

@ -0,0 +1,57 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Default properties on the &lt;math&gt; 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>

View file

@ -1,4 +1,4 @@
flake8==3.8.3
pycodestyle==2.6.0
pyflakes==2.2.0
pep8-naming==0.10.0
pep8-naming==0.11.1

View file

@ -64,9 +64,11 @@
function getNoiseStreamOkCallback(localStream) {
gFirstConnection = new RTCPeerConnection(null);
test.add_cleanup(() => gFirstConnection.close());
gFirstConnection.onicecandidate = onIceCandidateToFirst;
gSecondConnection = new RTCPeerConnection(null);
test.add_cleanup(() => gSecondConnection.close());
gSecondConnection.onicecandidate = onIceCandidateToSecond;
gSecondConnection.ontrack = onRemoteTrack;

View file

@ -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>

View file

@ -1,5 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta name="timeout" content="long">
<title>RTCPeerConnection.prototype.createDataChannel</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>

View file

@ -122,6 +122,8 @@
assert_true(had_checking, 'state should pass checking before' +
' reaching connected or completed');
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' +
' iceConnectionState is completed');
t.done();
} else if (iceConnectionState === 'failed') {
assert_unreached("ICE should not fail");
}
});

View file

@ -1,5 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta name="timeout" content="long">
<title>RTCPeerConnection.prototype.setRemoteDescription - add/remove remote tracks</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

View file

@ -76,8 +76,10 @@ and ensures that an empty string sent by one is received by the second.
test.step(function() {
gFirstConnection = new RTCPeerConnection(null);
test.add_cleanup(() => gFirstConnection.close());
gSecondConnection = new RTCPeerConnection(null);
test.add_cleanup(() => gSecondConnection.close());
gFirstConnection.onicecandidate = exchangeIce(gSecondConnection);
gSecondConnection.onicecandidate = exchangeIce(gFirstConnection);

View file

@ -81,10 +81,12 @@ This test uses data only, and thus does not require fake media devices.
// This function starts the test.
test.step(function() {
gFirstConnection = new RTCPeerConnection(null);
test.add_cleanup(() => gFirstConnection.close());
gFirstConnection.onicecandidate = onIceCandidateToFirst;
gFirstConnection.oniceconnectionstatechange = onIceConnectionStateChange;
gSecondConnection = new RTCPeerConnection(null);
test.add_cleanup(() => gSecondConnection.close());
gSecondConnection.onicecandidate = onIceCandidateToSecond;
// The createDataChannel is necessary and sufficient to make

View file

@ -113,10 +113,12 @@
// This function starts the test.
test.step(function() {
gFirstConnection = new RTCPeerConnection(null);
test.add_cleanup(() => gFirstConnection.close());
gFirstConnection.onicecandidate = onIceCandidateToFirst;
gFirstConnection.oniceconnectionstatechange = onIceConnectionStateChange;
gSecondConnection = new RTCPeerConnection(null);
test.add_cleanup(() => gSecondConnection.close());
gSecondConnection.onicecandidate = onIceCandidateToSecond;
gSecondConnection.oniceconnectionstatechange = onIceConnectionStateChange;

View file

@ -66,10 +66,12 @@ This test uses data only, and thus does not require fake media devices.
// This function starts the test.
test.step(function() {
gFirstConnection = new RTCPeerConnection(null);
test.add_cleanup(() => gFirstConnection.close());
gFirstConnection.onicecandidate = onIceCandidateToFirst;
gFirstConnection.oniceconnectionstatechange = onIceConnectionStateChange;
gSecondConnection = new RTCPeerConnection(null);
test.add_cleanup(() => gSecondConnection.close());
gSecondConnection.onicecandidate = onIceCandidateToSecond;
gSecondConnection.oniceconnectionstatechange = onIceConnectionStateChange;

View file

@ -32,6 +32,7 @@
function getNoiseStreamOkCallback(localStream) {
gFirstConnection = new RTCPeerConnection(null);
test.add_cleanup(() => gFirstConnection.close());
gFirstConnection.onicecandidate = onIceCandidateToFirst;
localStream.getTracks().forEach(function(track) {
gFirstConnection.addTrack(track, localStream);
@ -56,6 +57,7 @@
function receiveCall(offerSdp) {
gSecondConnection = new RTCPeerConnection(null);
test.add_cleanup(() => gSecondConnection.close());
gSecondConnection.onicecandidate = onIceCandidateToSecond;
gSecondConnection.ontrack = onRemoteTrack;

Some files were not shown because too many files have changed in this diff Show more