Update web-platform-tests to revision 10adbd6b133f1ccf77a27ed51ffd3e7a00a499ee

This commit is contained in:
WPT Sync Bot 2020-03-24 08:19:05 +00:00
parent ecef8994e0
commit 1d6ba62c8f
119 changed files with 4676 additions and 523 deletions

View file

@ -0,0 +1,226 @@
[idlharness.tentative.https.window.html]
[BluetoothDevice interface: operation watchAdvertisements(optional WatchAdvertisementsOptions)]
expected: FAIL
[BluetoothPermissionResult interface: attribute devices]
expected: FAIL
[Bluetooth interface: navigator.bluetooth must inherit property "getDevices()" with the proper type]
expected: FAIL
[BluetoothRemoteGATTService interface: attribute oncharacteristicvaluechanged]
expected: FAIL
[Bluetooth interface: attribute onserviceadded]
expected: FAIL
[Bluetooth interface: navigator.bluetooth must inherit property "oncharacteristicvaluechanged" with the proper type]
expected: FAIL
[BluetoothServiceDataMap interface object length]
expected: FAIL
[BluetoothManufacturerDataMap interface: existence and properties of interface prototype object]
expected: FAIL
[BluetoothAdvertisingEvent interface: attribute manufacturerData]
expected: FAIL
[BluetoothRemoteGATTDescriptor interface: operation readValue()]
expected: FAIL
[Bluetooth interface: navigator.bluetooth must inherit property "onadvertisementreceived" with the proper type]
expected: FAIL
[BluetoothAdvertisingEvent interface: event must inherit property "uuids" with the proper type]
expected: FAIL
[Bluetooth interface: operation requestDevice(optional RequestDeviceOptions)]
expected: FAIL
[BluetoothRemoteGATTCharacteristic interface: operation readValue()]
expected: FAIL
[BluetoothRemoteGATTServer interface: operation connect()]
expected: FAIL
[Bluetooth interface: attribute referringDevice]
expected: FAIL
[BluetoothAdvertisingEvent interface: attribute uuids]
expected: FAIL
[Stringification of event]
expected: FAIL
[BluetoothRemoteGATTCharacteristic interface: operation getDescriptors(optional BluetoothDescriptorUUID)]
expected: FAIL
[BluetoothRemoteGATTCharacteristic interface: operation stopNotifications()]
expected: FAIL
[BluetoothManufacturerDataMap interface: existence and properties of interface object]
expected: FAIL
[Bluetooth interface: attribute onadvertisementreceived]
expected: FAIL
[BluetoothRemoteGATTDescriptor interface: operation writeValue(BufferSource)]
expected: FAIL
[BluetoothAdvertisingEvent must be primary interface of event]
expected: FAIL
[BluetoothServiceDataMap interface: existence and properties of interface object]
expected: FAIL
[Bluetooth interface: operation getDevices()]
expected: FAIL
[Bluetooth interface: navigator.bluetooth must inherit property "onserviceremoved" with the proper type]
expected: FAIL
[BluetoothRemoteGATTCharacteristic interface: operation writeValueWithResponse(BufferSource)]
expected: FAIL
[BluetoothServiceDataMap interface: existence and properties of interface prototype object's "constructor" property]
expected: FAIL
[BluetoothAdvertisingEvent interface: event must inherit property "manufacturerData" with the proper type]
expected: FAIL
[BluetoothManufacturerDataMap interface object length]
expected: FAIL
[BluetoothAdvertisingEvent interface: attribute serviceData]
expected: FAIL
[Bluetooth interface: attribute onserviceremoved]
expected: FAIL
[BluetoothManufacturerDataMap interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
[BluetoothRemoteGATTCharacteristic interface: operation getDescriptor(BluetoothDescriptorUUID)]
expected: FAIL
[BluetoothAdvertisingEvent interface: event must inherit property "txPower" with the proper type]
expected: FAIL
[ValueEvent interface: attribute value]
expected: FAIL
[BluetoothManufacturerDataMap interface object name]
expected: FAIL
[BluetoothRemoteGATTCharacteristic interface: operation startNotifications()]
expected: FAIL
[BluetoothServiceDataMap interface object name]
expected: FAIL
[BluetoothDevice interface: attribute onservicechanged]
expected: FAIL
[Bluetooth interface: attribute onservicechanged]
expected: FAIL
[Bluetooth interface: navigator.bluetooth must inherit property "ongattserverdisconnected" with the proper type]
expected: FAIL
[BluetoothRemoteGATTCharacteristic interface: operation writeValue(BufferSource)]
expected: FAIL
[BluetoothRemoteGATTCharacteristic interface: operation writeValueWithoutResponse(BufferSource)]
expected: FAIL
[BluetoothRemoteGATTServer interface: operation getPrimaryService(BluetoothServiceUUID)]
expected: FAIL
[BluetoothDevice interface: attribute oncharacteristicvaluechanged]
expected: FAIL
[BluetoothRemoteGATTService interface: operation getIncludedServices(optional BluetoothServiceUUID)]
expected: FAIL
[BluetoothAdvertisingEvent interface: event must inherit property "device" with the proper type]
expected: FAIL
[BluetoothAdvertisingEvent interface: event must inherit property "name" with the proper type]
expected: FAIL
[BluetoothManufacturerDataMap interface: existence and properties of interface prototype object's "constructor" property]
expected: FAIL
[ValueEvent interface: existence and properties of interface prototype object's "constructor" property]
expected: FAIL
[BluetoothRemoteGATTServer interface: operation getPrimaryServices(optional BluetoothServiceUUID)]
expected: FAIL
[Bluetooth interface: attribute ongattserverdisconnected]
expected: FAIL
[ValueEvent interface: existence and properties of interface prototype object]
expected: FAIL
[ValueEvent interface object length]
expected: FAIL
[BluetoothRemoteGATTService interface: operation getCharacteristics(optional BluetoothCharacteristicUUID)]
expected: FAIL
[ValueEvent interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
[ValueEvent interface: existence and properties of interface object]
expected: FAIL
[Bluetooth interface: operation getAvailability()]
expected: FAIL
[BluetoothRemoteGATTService interface: operation getIncludedService(BluetoothServiceUUID)]
expected: FAIL
[BluetoothAdvertisingEvent interface: event must inherit property "rssi" with the proper type]
expected: FAIL
[BluetoothAdvertisingEvent interface: event must inherit property "appearance" with the proper type]
expected: FAIL
[BluetoothServiceDataMap interface: existence and properties of interface prototype object]
expected: FAIL
[Bluetooth interface: navigator.bluetooth must inherit property "onserviceadded" with the proper type]
expected: FAIL
[BluetoothDevice interface: attribute onserviceremoved]
expected: FAIL
[ValueEvent interface object name]
expected: FAIL
[BluetoothRemoteGATTService interface: operation getCharacteristic(BluetoothCharacteristicUUID)]
expected: FAIL
[BluetoothDevice interface: attribute onserviceadded]
expected: FAIL
[Bluetooth interface: navigator.bluetooth must inherit property "referringDevice" with the proper type]
expected: FAIL
[Bluetooth interface: navigator.bluetooth must inherit property "onservicechanged" with the proper type]
expected: FAIL
[BluetoothServiceDataMap interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
[BluetoothDevice interface: attribute onadvertisementreceived]
expected: FAIL
[BluetoothAdvertisingEvent interface: event must inherit property "serviceData" with the proper type]
expected: FAIL
[Bluetooth interface: attribute oncharacteristicvaluechanged]
expected: FAIL

View file

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

View file

@ -0,0 +1,2 @@
[animation-base-response-001.html]
expected: ERROR

View file

@ -0,0 +1,4 @@
[animation-base-response-002.html]
[Animated font-size on root affects rem units]
expected: FAIL

View file

@ -0,0 +1,16 @@
[animation-important-001.html]
[Interpolated value is observable]
expected: FAIL
[Important rules override animations (::before)]
expected: FAIL
[Non-overriden interpolations are observable]
expected: FAIL
[Important rules do not override animations on :visited as seen from JS]
expected: FAIL
[Important rules override animations]
expected: FAIL

View file

@ -0,0 +1,2 @@
[animation-important-002.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[stretch-obeys-min-max-002.html]
expected: FAIL

View file

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

View file

@ -0,0 +1,2 @@
[transition-base-response-001.html]
expected: ERROR

View file

@ -0,0 +1,4 @@
[transition-base-response-002.html]
[Transitioning font-size on root affects rem units]
expected: FAIL

View file

@ -1,4 +0,0 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

@ -17,6 +17,3 @@
[test the top of layer] [test the top of layer]
expected: FAIL expected: FAIL
[test some point of the element: top left corner]
expected: FAIL

View file

@ -0,0 +1,4 @@
[CSSStyleSheet-constructable-replace-on-regular-sheet.html]
[replace / replaceSync on non-constructed stylesheet]
expected: FAIL

View file

@ -0,0 +1,79 @@
[fetch-destination.https.html]
[HTMLVideoElement fetches with a "video" Request.destination]
expected: FAIL
[HTMLLinkElement with rel=preload and as=video fetches with a "video" Request.destination]
expected: FAIL
[HTMLLinkElement with rel=preload and as=script fetches with a "script" Request.destination]
expected: FAIL
[HTMLLinkElement with rel=preload and as=sharedworker fetches with a "sharedworker" Request.destination]
expected: FAIL
[HTMLLinkElement with rel=preload and as=manifest fetches with a "manifest" Request.destination]
expected: FAIL
[HTMLImageElement with srcset attribute fetches with an "image" Request.destination]
expected: FAIL
[SVGImageElement fetches with an "image" Request.destination]
expected: FAIL
[HTMLAudioElement fetches with an "audio" Request.destination]
expected: FAIL
[HTMLScriptElement fetches with a "script" Request.destination]
expected: FAIL
[HTMLLinkElement with rel=preload and as=audio fetches with a "audio" Request.destination]
expected: FAIL
[HTMLImageElement with a HTMLPictureElement parent attribute fetches with an "image" Request.destination]
expected: FAIL
[HTMLLinkElement with rel=preload and as=document fetches with a "document" Request.destination]
expected: FAIL
[HTMLLinkElement with rel=stylesheet fetches with a "style" Request.destination]
expected: FAIL
[HTMLImageElement fetches with an "image" Request.destination]
expected: FAIL
[HTMLLinkElement with rel=preload and as=style fetches with a "style" Request.destination]
expected: FAIL
[XMLHttpRequest() fetches with an empty string Request.destination]
expected: FAIL
[EventSource() fetches with an empty string Request.destination]
expected: FAIL
[HTMLLinkElement with rel=preload and as=fetch fetches with an empty string Request.destination]
expected: FAIL
[HTMLLinkElement with rel=preload and as=font fetches with a "font" Request.destination]
expected: FAIL
[HTMLLinkElement with rel=preload and as=xslt fetches with a "xslt" Request.destination]
expected: FAIL
[Initialize global state]
expected: FAIL
[HTMLLinkElement with rel=preload and as=track fetches with a "track" Request.destination]
expected: FAIL
[fetch() fetches with an empty string Request.destination]
expected: FAIL
[HTMLLinkElement with rel=preload and as=image fetches with a "image" Request.destination]
expected: FAIL
[AudioWorklet module fetches with a "audioworklet" Request.destination]
expected: FAIL
[HTMLLinkElement with rel=preload and as=worker fetches with a "worker" Request.destination]
expected: FAIL

View file

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

View file

@ -11,3 +11,9 @@
[X-Content-Type-Options%3A%20nosniff%0C] [X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%20%22nosniFF%22]
expected: FAIL
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
expected: FAIL

View file

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

View file

@ -1,4 +0,0 @@
[traverse_the_history_3.html]
[Multiple history traversals, last would be aborted]
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,8 @@
[skip-document-with-fragment.html]
expected: TIMEOUT
[Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.]
expected: TIMEOUT
[Autofocus elements in iframed documents with URL fragments should be skipped.]
expected: FAIL

View file

@ -7,10 +7,10 @@
expected: NOTRUN expected: NOTRUN
[Element with tabindex should support autofocus] [Element with tabindex should support autofocus]
expected: FAIL expected: TIMEOUT
[Non-HTMLElement should not support autofocus] [Non-HTMLElement should not support autofocus]
expected: TIMEOUT expected: NOTRUN
[Area element should support autofocus] [Area element should support autofocus]
expected: NOTRUN expected: NOTRUN

View file

@ -1,5 +1,4 @@
[iframe_sandbox_popups_nonescaping-1.html] [iframe_sandbox_popups_nonescaping-1.html]
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: FAIL

View file

@ -0,0 +1,2 @@
[image-loading-subpixel-clip.html]
expected: TIMEOUT

View file

@ -0,0 +1,4 @@
[077.html]
[ adding several types of scripts through the DOM and removing some of them confuses scheduler ]
expected: FAIL

View file

@ -0,0 +1,2 @@
[realtimeanalyser-fft-scaling.html]
expected: TIMEOUT

View file

@ -14,3 +14,6 @@
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44048 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 37130.\n\t[37130\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n] [X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44048 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 37130.\n\t[37130\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL expected: FAIL
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44051 more errors.\n\tMax AbsError of 1.9798262119293213e+0 at index of 27116.\n\t[27116\]\t9.9151444435119629e-1\t-9.8831176757812500e-1\t1.9798262119293213e+0\t2.0032405531110080e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL

View file

@ -23,3 +23,9 @@
[X SNR (-349.52143104912756 dB) is not greater than or equal to 85.58. Got -349.52143104912756.] [X SNR (-349.52143104912756 dB) is not greater than or equal to 85.58. Got -349.52143104912756.]
expected: FAIL expected: FAIL
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t1.1378110271370935e+22\t5.6332010030746460e-1\t1.1378110271370935e+22\t2.0198303353920215e+22\t9.0957000000000003e-5\n\t[31081\]\t4.5877110423530186e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 1.1378110271370935e+22 at index of 31080.\n\tMax RelError of 2.0198303353920215e+22 at index of 31080.\n]
expected: FAIL
[X SNR (-397.6873168264859 dB) is not greater than or equal to 85.58. Got -397.6873168264859.]
expected: FAIL

View file

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

View file

@ -0,0 +1,7 @@
[shared-worker-parse-error-failure.html]
[Classic shared worker construction for script with syntax error should dispatch an event named error.]
expected: FAIL
[Static import on classic shared worker should dispatch an event named error.]
expected: FAIL

View file

@ -117356,6 +117356,19 @@
{} {}
] ]
], ],
"animation-important-002.html": [
"2a68f8e0cacf06e2e5761ef392b90a4f89fcc843",
[
null,
[
[
"/css/css-animations/animation-important-002-ref.html",
"=="
]
],
{}
]
],
"animation-opacity-pause-and-set-time.html": [ "animation-opacity-pause-and-set-time.html": [
"c63c2f3b9fe3fd0b2e4a727398f1843febf339eb", "c63c2f3b9fe3fd0b2e4a727398f1843febf339eb",
[ [
@ -131000,6 +131013,19 @@
{} {}
] ]
], ],
"align-baseline.html": [
"31bcca69771751f3277d6f078456f982a375d067",
[
null,
[
[
"/css/css-flexbox/reference/align-baseline-ref.html",
"=="
]
],
{}
]
],
"align-content-001.htm": [ "align-content-001.htm": [
"785538714268efec18bcd80cb1cbe89c40d545b1", "785538714268efec18bcd80cb1cbe89c40d545b1",
[ [
@ -136724,6 +136750,45 @@
{} {}
] ]
], ],
"stretch-obeys-min-max-001.html": [
"4b7eb5a1f76a39fdad6956953270ab9bdf8a14c1",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"stretch-obeys-min-max-002.html": [
"339b68ae1ec588c0baffdc08b81a4a2c756451ec",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"stretch-obeys-min-max-003.html": [
"626cb2f57c59e6519003bedb870cd4a510a24579",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square-only.html",
"=="
]
],
{}
]
],
"table-as-item-auto-min-width.html": [ "table-as-item-auto-min-width.html": [
"66a77327f0f25e07db87e342ebb590358d045f7a", "66a77327f0f25e07db87e342ebb590358d045f7a",
[ [
@ -141034,6 +141099,32 @@
{} {}
] ]
], ],
"grid-auto-repeat-multiple-values-002.html": [
"723d876a6a31b38b3ba8964c6e6d4c958d35eef4",
[
null,
[
[
"/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-002-ref.html",
"=="
]
],
{}
]
],
"grid-auto-repeat-multiple-values-003.html": [
"486259a5d3e34bfc949021192b3444f13de32be2",
[
null,
[
[
"/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-003-ref.html",
"=="
]
],
{}
]
],
"grid-layout-auto-tracks.html": [ "grid-layout-auto-tracks.html": [
"2cc3614d9ec60581f01b4e5ff7ffe624d7f3ce11", "2cc3614d9ec60581f01b4e5ff7ffe624d7f3ce11",
[ [
@ -141073,6 +141164,32 @@
{} {}
] ]
], ],
"grid-support-named-grid-lines-002.html": [
"6b3b19ef97f413dea4ed68fbb26edcb7a0ed1f55",
[
null,
[
[
"/css/css-grid/grid-definition/grid-support-named-grid-lines-002-ref.html",
"=="
]
],
{}
]
],
"grid-support-named-grid-lines-003.html": [
"c2c722485f1f9b0c0667a317649e5817ecdefb34",
[
null,
[
[
"/css/css-grid/grid-definition/grid-support-named-grid-lines-003-ref.html",
"=="
]
],
{}
]
],
"grid-template-columns-fit-content-001.html": [ "grid-template-columns-fit-content-001.html": [
"83b53db39b154dc8001dbef809aeb0eff7774c2a", "83b53db39b154dc8001dbef809aeb0eff7774c2a",
[ [
@ -143906,6 +144023,19 @@
{} {}
] ]
], ],
"repeat-auto-fill-008.html": [
"28238178f0d9d66139cced2acdd6675fe77c6b36",
[
null,
[
[
"/css/css-grid/subgrid/repeat-auto-fill-008-ref.html",
"=="
]
],
{}
]
],
"subgrid-item-block-size-001.html": [ "subgrid-item-block-size-001.html": [
"29e82197831fec5e996d0f682a8f42eca819a8ed", "29e82197831fec5e996d0f682a8f42eca819a8ed",
[ [
@ -227318,6 +227448,19 @@
{} {}
] ]
], ],
"image-loading-subpixel-clip.html": [
"de62d7d73599c144228b82139654660d2e8b1bfc",
[
null,
[
[
"/html/semantics/embedded-content/the-img-element/image-loading-subpixel-clip-ref.html",
"=="
]
],
{}
]
],
"img-with-containment-and-size.html": [ "img-with-containment-and-size.html": [
"a095adc7cf6775e9c9b63832c0c5c9df23756b6c", "a095adc7cf6775e9c9b63832c0c5c9df23756b6c",
[ [
@ -280679,6 +280822,10 @@
"ddc7da67ddf5fed83e653d1130a65f5c1e3a6dec", "ddc7da67ddf5fed83e653d1130a65f5c1e3a6dec",
[] []
], ],
"animation-important-002-ref.html": [
"52855cb91e6b780fc6375280b0643335802dd4e3",
[]
],
"animation-opacity-pause-and-set-time-ref.html": [ "animation-opacity-pause-and-set-time-ref.html": [
"ab9f614ed8e7e846b9c5f3c5d66a0827db4d6637", "ab9f614ed8e7e846b9c5f3c5d66a0827db4d6637",
[] []
@ -283976,6 +284123,10 @@
"12e94ba598e74cd253f0f91daf7e88f44884b7fc", "12e94ba598e74cd253f0f91daf7e88f44884b7fc",
[] []
], ],
"align-baseline-ref.html": [
"d5b88e8c7dae73b57c7f993260d7cce363eeebaa",
[]
],
"align-content-001-ref.html": [ "align-content-001-ref.html": [
"bd468820339bb2bacbaf91ba64911ec24fc1de26", "bd468820339bb2bacbaf91ba64911ec24fc1de26",
[] []
@ -291528,6 +291679,22 @@
[] []
], ],
"grid-definition": { "grid-definition": {
"grid-auto-repeat-multiple-values-002-ref.html": [
"754fec3fa0f34787bcd1394c41b67b1c8b02cbb1",
[]
],
"grid-auto-repeat-multiple-values-003-ref.html": [
"975c94b795c1c1e53759a5f1e0ec0f6ee1a6889f",
[]
],
"grid-support-named-grid-lines-002-ref.html": [
"d65696428c2542c4851207df24e1d3638e6c49af",
[]
],
"grid-support-named-grid-lines-003-ref.html": [
"33f88bf37440db7dbf9d7902debf6859f58ee6e8",
[]
],
"grid-template-columns-fit-content-001-ref.html": [ "grid-template-columns-fit-content-001-ref.html": [
"f29a13e0fe060ae15835bacf8bc1bf3436c0b50f", "f29a13e0fe060ae15835bacf8bc1bf3436c0b50f",
[] []
@ -291894,6 +292061,10 @@
"9bc2eeff1c7dd57873058439c9072eaa16f9d441", "9bc2eeff1c7dd57873058439c9072eaa16f9d441",
[] []
], ],
"repeat-auto-fill-008-ref.html": [
"4cbb1540de1972dd6baaa0c56d2c18dcf10e1103",
[]
],
"subgrid-item-block-size-001-ref.html": [ "subgrid-item-block-size-001-ref.html": [
"d264a3455a6c580976d2519ab4e0eb206b1164bf", "d264a3455a6c580976d2519ab4e0eb206b1164bf",
[] []
@ -291907,6 +292078,12 @@
[] []
] ]
}, },
"support": {
"grid-child-utils.js": [
"d75ad6eb7061349e5453c204235a172778528f6a",
[]
]
},
"table-grid-item-dynamic-001-ref.html": [ "table-grid-item-dynamic-001-ref.html": [
"362904334aaef447de9d895e413474a9b4d2c5a6", "362904334aaef447de9d895e413474a9b4d2c5a6",
[] []
@ -310386,7 +310563,7 @@
[] []
], ],
"crashtest.md": [ "crashtest.md": [
"76ae46b1e592762f5b8561e7041eca336a14c8d0", "fa5c4ee67ecda24c4ad87f62008df752aa08503d",
[] []
], ],
"css-metadata.md": [ "css-metadata.md": [
@ -316344,6 +316521,10 @@
"4e798cd9f5d3f756df077a43ce9a1a6f9b41fd28", "4e798cd9f5d3f756df077a43ce9a1a6f9b41fd28",
[] []
], ],
"cache-storage-reporting.js": [
"af36ccf9d3df852f75af46339e7df6bff23a5402",
[]
],
"coep-frame.html": [ "coep-frame.html": [
"78c13311324683c3a6eff72e55bd733268edd6ec", "78c13311324683c3a6eff72e55bd733268edd6ec",
[] []
@ -316425,7 +316606,7 @@
[] []
], ],
"script-factory.js": [ "script-factory.js": [
"9db755226020479fd87e87f42ea622c999b38f7d", "ab7286e57ac18ca4b34f6c6d75d17b6d9198f7c0",
[] []
], ],
"sw-store-to-cache-storage.js": [ "sw-store-to-cache-storage.js": [
@ -322603,6 +322784,10 @@
"2fb0255609adc25a3394ae3edbd75ce4a43cb06d", "2fb0255609adc25a3394ae3edbd75ce4a43cb06d",
[] []
], ],
"image-loading-subpixel-clip-ref.html": [
"4b3c2d708a88a5451e3eef922dac44e1eae5b433",
[]
],
"image.png": [ "image.png": [
"d26878c9f22d53bb44be515fa9f0ffbb90a71cbd", "d26878c9f22d53bb44be515fa9f0ffbb90a71cbd",
[] []
@ -325931,7 +326116,7 @@
[] []
], ],
"geolocation-sensor.idl": [ "geolocation-sensor.idl": [
"ef172f63ea0eb141cb20551da76e578cbff733d0", "baa0f5c7a1e78a2e2ee9772ffada53790116cd55",
[] []
], ],
"geometry.idl": [ "geometry.idl": [
@ -325955,7 +326140,7 @@
[] []
], ],
"image-capture.idl": [ "image-capture.idl": [
"e9016a1f9bab87e9ed62a4bc99e7bcd0d958abf4", "148bd7bb4cd0bd58162da962a5b230dc53116303",
[] []
], ],
"input-events.idl": [ "input-events.idl": [
@ -326023,7 +326208,7 @@
[] []
], ],
"mediastream-recording.idl": [ "mediastream-recording.idl": [
"2d849ba9affe476a23141c9f3976c65b2d9f7ef4", "52295125da66d8562f66366f279d57ae05a7fe86",
[] []
], ],
"mst-content-hint.idl": [ "mst-content-hint.idl": [
@ -326239,7 +326424,7 @@
[] []
], ],
"web-bluetooth.idl": [ "web-bluetooth.idl": [
"cbf09e1d7ed736f27f2c2a0ee185da681e1ffed6", "73371e26996568e9051990fbb67f1e08deaed5eb",
[] []
], ],
"web-locks.idl": [ "web-locks.idl": [
@ -326311,7 +326496,7 @@
[] []
], ],
"webxr.idl": [ "webxr.idl": [
"e95acca7ca3d1f8170cd0fd28d0281581fb59544", "1b005c3cdb39667e55875d31a53f574ac8d388e3",
[] []
], ],
"worklets.idl": [ "worklets.idl": [
@ -328516,7 +328701,7 @@
[] []
], ],
"subframe-with-origin-policy.py": [ "subframe-with-origin-policy.py": [
"258f23754ef7ef0b5c68f351c7c330c7e288c0c8", "68e3e20718545bd9ba1fd0db3b6d773b8c5dbdb6",
[] []
] ]
} }
@ -340989,7 +341174,7 @@
} }
}, },
"tox.ini": [ "tox.ini": [
"6dd70cd7b2a36e0e766d4a559a32897739b646db", "46ab21ab29d5b21103677fe5e44cd4b9e9d4068b",
[] []
], ],
"webdriver": { "webdriver": {
@ -344451,7 +344636,7 @@
[] []
], ],
"RTCPeerConnection-helper.js": [ "RTCPeerConnection-helper.js": [
"25ddd99bb0981db40b4d147580a343e773fc7f1a", "24b3db7a0880fcc20cb8841e8d03e09731b8e0c0",
[] []
], ],
"RTCRtpCapabilities-helper.js": [ "RTCRtpCapabilities-helper.js": [
@ -347863,6 +348048,10 @@
"f0884cc1d26a3ac6bc942d9c22a194338329b03d", "f0884cc1d26a3ac6bc942d9c22a194338329b03d",
[] []
], ],
"check-error-arguments.js": [
"64441f9225ec6cb662ace4b3f137fcc20121d125",
[]
],
"empty-worker.js": [ "empty-worker.js": [
"49ceb2648a93410bdd5ee53ef0e114146210741b", "49ceb2648a93410bdd5ee53ef0e114146210741b",
[] []
@ -357514,7 +357703,7 @@
] ]
], ],
"idlharness.any.js": [ "idlharness.any.js": [
"efb84661e8044d146ab0704f18a6a3805ff3c803", "12c304589ab90da254f98b872661f23c8ba59742",
[ [
"IndexedDB/idlharness.any.html", "IndexedDB/idlharness.any.html",
{ {
@ -357530,8 +357719,13 @@
[ [
"script", "script",
"/resources/idlharness.js" "/resources/idlharness.js"
],
[
"timeout",
"long"
] ]
] ],
"timeout": "long"
} }
], ],
[ [
@ -357549,8 +357743,13 @@
[ [
"script", "script",
"/resources/idlharness.js" "/resources/idlharness.js"
],
[
"timeout",
"long"
] ]
] ],
"timeout": "long"
} }
], ],
[ [
@ -357568,8 +357767,13 @@
[ [
"script", "script",
"/resources/idlharness.js" "/resources/idlharness.js"
],
[
"timeout",
"long"
] ]
] ],
"timeout": "long"
} }
], ],
[ [
@ -357587,8 +357791,13 @@
[ [
"script", "script",
"/resources/idlharness.js" "/resources/idlharness.js"
],
[
"timeout",
"long"
] ]
] ],
"timeout": "long"
} }
] ]
], ],
@ -377541,6 +377750,20 @@
{} {}
] ]
], ],
"animation-base-response-001.html": [
"c6731e179823584577f42a649f6f3665611a522a",
[
null,
{}
]
],
"animation-base-response-002.html": [
"e9ea964f75da4def5e94875deed3761e622d23d7",
[
null,
{}
]
],
"animation-before-initial-box-construction-001.html": [ "animation-before-initial-box-construction-001.html": [
"558c5ea18699f3856c7d34b976f920b1fd7fd5b0", "558c5ea18699f3856c7d34b976f920b1fd7fd5b0",
[ [
@ -377548,6 +377771,13 @@
{} {}
] ]
], ],
"animation-important-001.html": [
"5bc3ecfa7501b3e3eae771212d6c8ac94b6ddcdf",
[
null,
{}
]
],
"animation-iteration-count-calc.html": [ "animation-iteration-count-calc.html": [
"44e1e96a589a4e1c5b98e919e7246d05097b0604", "44e1e96a589a4e1c5b98e919e7246d05097b0604",
[ [
@ -383970,7 +384200,7 @@
] ]
], ],
"grid-template-columns-computed-withcontent.html": [ "grid-template-columns-computed-withcontent.html": [
"a788ca22f77c188e6a574852ca23936bd6349071", "ed67f03f6c226ad32370b76a36f431e4636b463a",
[ [
null, null,
{} {}
@ -383997,6 +384227,20 @@
{} {}
] ]
], ],
"grid-template-repeat-auto-computed-withcontent-001.html": [
"c18f296abc9cd32a77abef8e12f41282a52cfafb",
[
null,
{}
]
],
"grid-template-repeat-auto-computed-withcontent-002.html": [
"8cb9209ceedac17ca0be48a8c965db0061fee90d",
[
null,
{}
]
],
"grid-template-rows-computed-nogrid.html": [ "grid-template-rows-computed-nogrid.html": [
"057a7fa0615fae3797939aa77c762b8335a90f2b", "057a7fa0615fae3797939aa77c762b8335a90f2b",
[ [
@ -384062,6 +384306,15 @@
{} {}
] ]
] ]
},
"subgrid": {
"grid-template-computed-nogrid.html": [
"6c2042fde784a42c24c7a967693f95734eff50e4",
[
null,
{}
]
]
} }
}, },
"css-images": { "css-images": {
@ -393169,6 +393422,20 @@
{} {}
] ]
], ],
"transition-base-response-001.html": [
"b4188985ac5d40cbf03efd6e780001baf3e96d01",
[
null,
{}
]
],
"transition-base-response-002.html": [
"89c6ff25bc5a080bdd87eb180194d63124eab438",
[
null,
{}
]
],
"transition-delay-001.html": [ "transition-delay-001.html": [
"921525ea72d2e1e28d2321c1594085deaf2330f0", "921525ea72d2e1e28d2321c1594085deaf2330f0",
[ [
@ -397300,6 +397567,13 @@
{} {}
] ]
], ],
"CSSStyleSheet-constructable-replace-on-regular-sheet.html": [
"d059258d90a64ac7dee02a14d92c677afe3fdb47",
[
null,
{}
]
],
"CSSStyleSheet-constructable.html": [ "CSSStyleSheet-constructable.html": [
"fbee4298c1411937f8c45a2f6001ee78dccadbb5", "fbee4298c1411937f8c45a2f6001ee78dccadbb5",
[ [
@ -398953,7 +399227,7 @@
] ]
}, },
"idlharness.any.js": [ "idlharness.any.js": [
"e7de16e8d62904986610a484b046a4caf0f161e3", "5df3aaf4b28842d05f4d038ba2ec0b18f828b6fc",
[ [
"css/filter-effects/idlharness.any.html", "css/filter-effects/idlharness.any.html",
{ {
@ -398965,8 +399239,13 @@
[ [
"script", "script",
"/resources/idlharness.js" "/resources/idlharness.js"
],
[
"timeout",
"long"
] ]
] ],
"timeout": "long"
} }
], ],
[ [
@ -398980,8 +399259,13 @@
[ [
"script", "script",
"/resources/idlharness.js" "/resources/idlharness.js"
],
[
"timeout",
"long"
] ]
] ],
"timeout": "long"
} }
] ]
], ],
@ -417321,10 +417605,12 @@
] ]
], ],
"feature-policy-nested-header-policy-allowed-for-self.https.sub.html": [ "feature-policy-nested-header-policy-allowed-for-self.https.sub.html": [
"274b3ebe9073f1558e0d2b378dc01a427528371b", "62ddd967495a251bcb76988d9236429af6cc8691",
[ [
null, null,
{} {
"timeout": "long"
}
] ]
], ],
"feature-policy-nested-header-policy-disallowed-for-all.https.sub.html": [ "feature-policy-nested-header-policy-disallowed-for-all.https.sub.html": [
@ -419907,7 +420193,7 @@
] ]
], ],
"fetch-destination.https.html": [ "fetch-destination.https.html": [
"27b510268dde9f24b2500756f5d55940cd98d884", "0094b0b6fe8eac2049fac57580bc6deb3c185922",
[ [
null, null,
{} {}
@ -424760,8 +425046,22 @@
{} {}
] ]
], ],
"cache-storage-reporting.https.html": [ "cache-storage-reporting-dedicated-worker.https.html": [
"4ef9eb21d69b35429b7a542b1f9c37a2b5042b18", "468861a9df60fc790e10515d3d01fd9fbd818266",
[
null,
{}
]
],
"cache-storage-reporting-document.https.html": [
"a6a2c355cb2287c6792c13e5a29e5e654ea00d3f",
[
null,
{}
]
],
"cache-storage-reporting-service-worker.https.html": [
"6b5b78bba088671d4d6eb5b7833bf1c873963eee",
[ [
null, null,
{ {
@ -424769,6 +425069,13 @@
} }
] ]
], ],
"cache-storage-reporting-shared-worker.https.html": [
"2cbdb21ee12d2bd971284d2a54e42d4bbf2a041d",
[
null,
{}
]
],
"coep-frame-javascript.https.html": [ "coep-frame-javascript.https.html": [
"d3e090bd7f7b08bbb75ec8541a1981d928a28e37", "d3e090bd7f7b08bbb75ec8541a1981d928a28e37",
[ [
@ -424941,7 +425248,7 @@
] ]
], ],
"coep-blob-popup.https.html": [ "coep-blob-popup.https.html": [
"c66988d0a659b1c0cf00bd88e06f3b2c3dded975", "c317f6bdf9baa9311abb93fe3a1fd174bb824b3b",
[ [
null, null,
{} {}
@ -443983,14 +444290,14 @@
] ]
], ],
"frac-parameters-1.html": [ "frac-parameters-1.html": [
"b7efbc78ca01a3919b83edfed67c2721025d4e69", "57b35fdeb0750d27d1f8b26a1da6d9b57ac95005",
[ [
null, null,
{} {}
] ]
], ],
"frac-parameters-2.html": [ "frac-parameters-2.html": [
"368fc0676d2135b6cd5381a822dd9ec92bf71512", "b913a34b99043580083c2782d5ab35dc3a459aad",
[ [
null, null,
{} {}
@ -445839,7 +446146,7 @@
] ]
], ],
"idlharness.https.window.js": [ "idlharness.https.window.js": [
"594e1121b005ea3cd7ef1f30aa15fbed07dff1a4", "b10e8dbb046d656e4b06c3572fb4ee069c9e0897",
[ [
"mediacapture-streams/idlharness.https.window.html", "mediacapture-streams/idlharness.https.window.html",
{ {
@ -445851,8 +446158,13 @@
[ [
"script", "script",
"/resources/idlharness.js" "/resources/idlharness.js"
],
[
"timeout",
"long"
] ]
] ],
"timeout": "long"
} }
] ]
] ]
@ -479300,7 +479612,7 @@
] ]
], ],
"idlharness.window.js": [ "idlharness.window.js": [
"6cfcbb2e95fd7e3e7d32aab6faae7cb231c6fec6", "77eb6a1be9083214d78d8d4c659952b18be4db8e",
[ [
"speech-api/idlharness.window.html", "speech-api/idlharness.window.html",
{ {
@ -479312,8 +479624,13 @@
[ [
"script", "script",
"/resources/idlharness.js" "/resources/idlharness.js"
],
[
"timeout",
"long"
] ]
] ],
"timeout": "long"
} }
] ]
] ]
@ -498990,7 +499307,7 @@
] ]
], ],
"RTCPeerConnection-onnegotiationneeded.html": [ "RTCPeerConnection-onnegotiationneeded.html": [
"3b65faca927fad96d45911350be355a1886ba3fb", "2eda7b5b341ca965dca970cdfa5c73b2f57e3189",
[ [
null, null,
{} {}
@ -499011,7 +499328,7 @@
] ]
], ],
"RTCPeerConnection-operations.https.html": [ "RTCPeerConnection-operations.https.html": [
"e88c8b28172c1c0edbfaef4dda10a306470ad96f", "a0921d315a3c20a2237cade41c51b2a34306b5d7",
[ [
null, null,
{} {}
@ -507777,6 +508094,13 @@
null, null,
{} {}
] ]
],
"shared-worker-parse-error-failure.html": [
"0d8e390382f1127856ed3c26ec5b3cd0a1648280",
[
null,
{}
]
] ]
}, },
"name-property.html": [ "name-property.html": [
@ -508192,6 +508516,13 @@
{} {}
] ]
], ],
"shared-worker-parse-error-failure.html": [
"3f1b4c5d85f403876f6b562cf09fdc1e1d37ab45",
[
null,
{}
]
],
"worker-performance.worker.js": [ "worker-performance.worker.js": [
"c913b2e7375067c1a21bdc655f394b5c27bc5aed", "c913b2e7375067c1a21bdc655f394b5c27bc5aed",
[ [
@ -508333,10 +508664,12 @@
] ]
], ],
"paint-worklet-csp.https.html": [ "paint-worklet-csp.https.html": [
"bf3b733b72b129d6979014b7a8ac5f522ce061b8", "61019d19efa149cbbf9d885d0b4d8792b5fb04c3",
[ [
null, null,
{} {
"timeout": "long"
}
] ]
], ],
"paint-worklet-import.https.html": [ "paint-worklet-import.https.html": [

View file

@ -239,3 +239,6 @@
[BluetoothRemoteGATTService interface: operation getCharacteristics(optional BluetoothCharacteristicUUID)] [BluetoothRemoteGATTService interface: operation getCharacteristics(optional BluetoothCharacteristicUUID)]
expected: FAIL expected: FAIL
[BluetoothDevice interface: operation watchAdvertisements(optional WatchAdvertisementsOptions)]
expected: FAIL

View file

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

View file

@ -0,0 +1,2 @@
[animation-base-response-001.html]
expected: ERROR

View file

@ -0,0 +1,4 @@
[animation-base-response-002.html]
[Animated font-size on root affects rem units]
expected: FAIL

View file

@ -0,0 +1,16 @@
[animation-important-001.html]
[Interpolated value is observable]
expected: FAIL
[Important rules override animations (::before)]
expected: FAIL
[Non-overriden interpolations are observable]
expected: FAIL
[Important rules do not override animations on :visited as seen from JS]
expected: FAIL
[Important rules override animations]
expected: FAIL

View file

@ -0,0 +1,2 @@
[animation-important-002.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[stretch-obeys-min-max-002.html]
expected: FAIL

View file

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

View file

@ -0,0 +1,2 @@
[transition-base-response-001.html]
expected: ERROR

View file

@ -0,0 +1,4 @@
[transition-base-response-002.html]
[Transitioning font-size on root affects rem units]
expected: FAIL

View file

@ -1,4 +0,0 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

@ -21,6 +21,3 @@
[test the top of layer] [test the top of layer]
expected: FAIL expected: FAIL
[test some point of the element: top left corner]
expected: FAIL

View file

@ -0,0 +1,4 @@
[CSSStyleSheet-constructable-replace-on-regular-sheet.html]
[replace / replaceSync on non-constructed stylesheet]
expected: FAIL

View file

@ -4,55 +4,85 @@
[Fetch destination tests] [Fetch destination tests]
expected: FAIL expected: FAIL
[Initialize global state] [Initialize global state]
expected: FAIL expected: FAIL
[HTMLImageElement fetches with an "image" Request.destination] [HTMLImageElement fetches with an "image" Request.destination]
expected: FAIL expected: FAIL
[HTMLImageElement with srcset attribute fetches with an "image" Request.destination] [HTMLImageElement with srcset attribute fetches with an "image" Request.destination]
expected: FAIL expected: FAIL
[HTMLImageElement with a HTMLPictureElement parent attribute fetches with an "image" Request.destination] [HTMLImageElement with a HTMLPictureElement parent attribute fetches with an "image" Request.destination]
expected: FAIL expected: FAIL
[SVGImageElement fetches with an "image" Request.destination] [SVGImageElement fetches with an "image" Request.destination]
expected: FAIL expected: FAIL
[fetch() fetches with an empty string Request.destination] [fetch() fetches with an empty string Request.destination]
expected: FAIL expected: FAIL
[XMLHttpRequest() fetches with an empty string Request.destination] [XMLHttpRequest() fetches with an empty string Request.destination]
expected: FAIL expected: FAIL
[EventSource() fetches with an empty string Request.destination] [EventSource() fetches with an empty string Request.destination]
expected: FAIL expected: FAIL
[HTMLAudioElement fetches with an "audio" Request.destination] [HTMLAudioElement fetches with an "audio" Request.destination]
expected: FAIL expected: FAIL
[HTMLVideoElement fetches with a "video" Request.destination] [HTMLVideoElement fetches with a "video" Request.destination]
expected: FAIL expected: FAIL
[HTMLScriptElement fetches with a "script" Request.destination] [HTMLScriptElement fetches with a "script" Request.destination]
expected: FAIL expected: FAIL
[HTMLLinkElement with rel=stylesheet fetches with a "style" Request.destination] [HTMLLinkElement with rel=stylesheet fetches with a "style" Request.destination]
expected: FAIL expected: FAIL
[HTMLLinkElement with rel=preload and as=fetch fetches with an empty string Request.destination] [HTMLLinkElement with rel=preload and as=fetch fetches with an empty string Request.destination]
expected: FAIL expected: FAIL
[HTMLLinkElement with rel=preload and as=style fetches with a "style" Request.destination] [HTMLLinkElement with rel=preload and as=style fetches with a "style" Request.destination]
expected: FAIL expected: FAIL
[HTMLLinkElement with rel=preload and as=script fetches with a "script" Request.destination] [HTMLLinkElement with rel=preload and as=script fetches with a "script" Request.destination]
expected: FAIL expected: FAIL
[HTMLLinkElement with rel=preload and as=font fetches with a "font" Request.destination] [HTMLLinkElement with rel=preload and as=font fetches with a "font" Request.destination]
expected: FAIL expected: FAIL
[HTMLLinkElement with rel=preload and as=image fetches with a "image" Request.destination] [HTMLLinkElement with rel=preload and as=image fetches with a "image" Request.destination]
expected: FAIL expected: FAIL
[HTMLLinkElement with rel=preload and as=audio fetches with a "audio" Request.destination] [HTMLLinkElement with rel=preload and as=audio fetches with a "audio" Request.destination]
expected: FAIL expected: FAIL
[HTMLLinkElement with rel=preload and as=video fetches with a "video" Request.destination] [HTMLLinkElement with rel=preload and as=video fetches with a "video" Request.destination]
expected: FAIL expected: FAIL
[HTMLLinkElement with rel=preload and as=track fetches with a "track" Request.destination] [HTMLLinkElement with rel=preload and as=track fetches with a "track" Request.destination]
expected: FAIL expected: FAIL
[HTMLLinkElement with rel=preload and as=document fetches with a "document" Request.destination] [HTMLLinkElement with rel=preload and as=document fetches with a "document" Request.destination]
expected: FAIL expected: FAIL
[HTMLLinkElement with rel=preload and as=worker fetches with a "worker" Request.destination] [HTMLLinkElement with rel=preload and as=worker fetches with a "worker" Request.destination]
expected: FAIL expected: FAIL
[HTMLLinkElement with rel=preload and as=sharedworker fetches with a "sharedworker" Request.destination] [HTMLLinkElement with rel=preload and as=sharedworker fetches with a "sharedworker" Request.destination]
expected: FAIL expected: FAIL
[HTMLLinkElement with rel=preload and as=xslt fetches with a "xslt" Request.destination] [HTMLLinkElement with rel=preload and as=xslt fetches with a "xslt" Request.destination]
expected: FAIL expected: FAIL
[HTMLLinkElement with rel=preload and as=manifest fetches with a "manifest" Request.destination] [HTMLLinkElement with rel=preload and as=manifest fetches with a "manifest" Request.destination]
expected: FAIL expected: FAIL
[HTMLLinkElement with rel=prefetch fetches with an empty string Request.destination] [HTMLLinkElement with rel=prefetch fetches with an empty string Request.destination]
expected: FAIL expected: FAIL
[AudioWorklet module fetches with a "audioworklet" Request.destination]
expected: FAIL

View file

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

View file

@ -11,3 +11,9 @@
[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%22nosniFF%22]
expected: FAIL
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
expected: FAIL

View file

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

View file

@ -1,4 +1,8 @@
[skip-document-with-fragment.html] [skip-document-with-fragment.html]
expected: TIMEOUT
[Autofocus elements in iframed documents with URL fragments should be skipped.] [Autofocus elements in iframed documents with URL fragments should be skipped.]
expected: FAIL expected: FAIL
[Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.]
expected: TIMEOUT

View file

@ -4,7 +4,7 @@
expected: FAIL expected: FAIL
[Element with tabindex should support autofocus] [Element with tabindex should support autofocus]
expected: FAIL expected: TIMEOUT
[Host element with delegatesFocus including no focusable descendants should be skipped] [Host element with delegatesFocus including no focusable descendants should be skipped]
expected: NOTRUN expected: NOTRUN
@ -16,5 +16,5 @@
expected: NOTRUN expected: NOTRUN
[Non-HTMLElement should not support autofocus] [Non-HTMLElement should not support autofocus]
expected: TIMEOUT expected: NOTRUN

View file

@ -1,6 +1,5 @@
[iframe_sandbox_popups_nonescaping-1.html] [iframe_sandbox_popups_nonescaping-1.html]
type: testharness type: testharness
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: FAIL

View file

@ -0,0 +1,2 @@
[image-loading-subpixel-clip.html]
expected: TIMEOUT

View file

@ -0,0 +1,4 @@
[077.html]
[ adding several types of scripts through the DOM and removing some of them confuses scheduler ]
expected: FAIL

View file

@ -1,4 +1,5 @@
[realtimeanalyser-fft-scaling.html] [realtimeanalyser-fft-scaling.html]
expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.] [X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL expected: FAIL

View file

@ -83,3 +83,6 @@
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44048 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 37130.\n\t[37130\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n] [X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44048 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 37130.\n\t[37130\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL expected: FAIL
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44051 more errors.\n\tMax AbsError of 1.9798262119293213e+0 at index of 27116.\n\t[27116\]\t9.9151444435119629e-1\t-9.8831176757812500e-1\t1.9798262119293213e+0\t2.0032405531110080e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL

View file

@ -254,3 +254,9 @@
[X SNR (-349.52143104912756 dB) is not greater than or equal to 85.58. Got -349.52143104912756.] [X SNR (-349.52143104912756 dB) is not greater than or equal to 85.58. Got -349.52143104912756.]
expected: FAIL expected: FAIL
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t1.1378110271370935e+22\t5.6332010030746460e-1\t1.1378110271370935e+22\t2.0198303353920215e+22\t9.0957000000000003e-5\n\t[31081\]\t4.5877110423530186e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 1.1378110271370935e+22 at index of 31080.\n\tMax RelError of 2.0198303353920215e+22 at index of 31080.\n]
expected: FAIL
[X SNR (-397.6873168264859 dB) is not greater than or equal to 85.58. Got -397.6873168264859.]
expected: FAIL

View file

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

View file

@ -0,0 +1,7 @@
[shared-worker-parse-error-failure.html]
[Classic shared worker construction for script with syntax error should dispatch an event named error.]
expected: FAIL
[Static import on classic shared worker should dispatch an event named error.]
expected: FAIL

View file

@ -1,6 +1,7 @@
// META: global=window,worker // META: global=window,worker
// META: script=/resources/WebIDLParser.js // META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js // META: script=/resources/idlharness.js
// META: timeout=long
idl_test( idl_test(
['IndexedDB'], ['IndexedDB'],

View file

@ -0,0 +1,75 @@
<!DOCTYPE html>
<title>Test that non-animated style is responsive to animated properties</title>
<link rel="help" href="https://drafts.csswg.org/css-animations/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
@keyframes font_size_animation {
from { font-size: 10px; }
to { font-size: 20px; }
}
@keyframes var_animation {
from { --x: 10px; }
to { --x: 20px; }
}
#targets > div {
animation-duration: 1000s;
animation-delay: -500s;
animation-timing-function: steps(2, end);
}
#target1 {
animation-name: font_size_animation;
font-size: 1px;
width: 1em;
}
#ref1 {
width: 15px;
}
#target2 {
animation-name: font_size_animation;
font-size: 1px;
width: 1ex;
}
#ref2 {
font-size: 15px;
width: 1ex;
}
#target3 {
animation-name: var_animation;
--x: 0px;
width: var(--x);
}
#ref3 {
width: 20px;
}
</style>
<div id="targets">
<div id="target1"></div>
<div id="target2"></div>
<div id="target3"></div>
</div>
<div id="refs">
<div id="ref1"></div>
<div id="ref2"></div>
<div id="ref3"></div>
</div>
<script>
// Test that the computed value of the given property is equal on
// 'target' and 'ref'.
function test_ref(target, ref, property, description) {
test(() => {
let actual = getComputedStyle(target).getPropertyValue(property);
let expected = getComputedStyle(ref).getPropertyValue(property);
assert_equals(actual, expected);
}, description);
}
test_ref(target1, ref1, 'width', 'em units respond to font-size animation');
test_ref(target2, ref2, 'width', 'ex units respond to font-size animation');
test_ref(target3, ref3, 'width', 'var() references respond to custom property animation');
</script>

View file

@ -0,0 +1,25 @@
<!DOCTYPE html>
<title>Test that rem units are responsive to animated font-size on root</title>
<link rel="help" href="https://drafts.csswg.org/css-animations/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
@keyframes font_size_animation {
from { font-size: 10px; }
to { font-size: 20px; }
}
:root {
font-size: 1px;
animation: font_size_animation steps(2, end) 1000s -500s;
}
#target1 {
width: 1rem;
}
</style>
<div id="target1"></div>
<script>
test(() => {
assert_equals(getComputedStyle(target1).getPropertyValue('width'), '15px');
}, 'Animated font-size on root affects rem units');
</script>

View file

@ -0,0 +1,72 @@
<!DOCTYPE html>
<title>Test !important declarations vs. animation effects</title>
<link rel="help" href="https://drafts.csswg.org/css-cascade/#cascade-origin">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
@keyframes bgcolor_animation {
from { background-color: rgb(10, 10, 10); }
to { background-color: rgb(20, 20, 20); }
}
@keyframes color_and_bg_animation {
from { background-color: rgb(10, 10, 10); color: rgb(10, 10, 10); }
to { background-color: rgb(20, 20, 20); color: rgb(20, 20, 20); }
}
a, div, ::before{
animation-duration: 1000s;
animation-delay: -500s;
animation-timing-function: steps(2, end);
}
#target1 {
animation-name: bgcolor_animation;
}
#target2 {
background-color: rgb(0, 128, 0) !important;
animation-name: bgcolor_animation;
}
#target3 {
color: rgb(0, 128, 0) !important;
animation-name: color_and_bg_animation;
}
#target4::before {
color: rgb(0, 128, 0) !important;
animation-name: color_and_bg_animation;
content: " ";
}
#target5 {
animation-name: color_and_bg_animation;
}
#target5:visited {
color: rgb(0, 128, 0) !important;
}
</style>
<div id="target1"></div>
<div id="target2"></div>
<div id="target3"></div>
<div id="target4"></div>
<a href="" id="target5"></a>
<script>
test(() => {
assert_equals(getComputedStyle(target1).backgroundColor, 'rgb(15, 15, 15)');
}, 'Interpolated value is observable');
test(() => {
assert_equals(getComputedStyle(target2).backgroundColor, 'rgb(0, 128, 0)');
}, 'Important rules override animations');
test(() => {
assert_equals(getComputedStyle(target3).color, 'rgb(0, 128, 0)');
assert_equals(getComputedStyle(target3).backgroundColor, 'rgb(15, 15, 15)');
}, 'Non-overriden interpolations are observable');
test(() => {
assert_equals(getComputedStyle(target4, '::before').color, 'rgb(0, 128, 0)');
assert_equals(getComputedStyle(target4, '::before').backgroundColor, 'rgb(15, 15, 15)');
}, 'Important rules override animations (::before)');
test(() => {
assert_equals(getComputedStyle(target5).color, 'rgb(15, 15, 15)');
assert_equals(getComputedStyle(target5).backgroundColor, 'rgb(15, 15, 15)');
}, 'Important rules do not override animations on :visited as seen from JS');
</script>

View file

@ -0,0 +1,9 @@
<!DOCTYPE html>
<style>
a {
text-decoration: underline;
background-color: rgb(0, 150, 0);
}
</style>
<a style="color: rgb(150, 0, 0)">Unvisited</a>
<a style="color: white">Visited</a>

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<title>Test that animated properties on :visited are overridden by !important</title>
<link rel="help" href="https://drafts.csswg.org/css-cascade/#cascade-origin">
<link rel="match" href="animation-important-002-ref.html">
<style>
@keyframes color_and_bg_animation {
from { background-color: rgb(0, 100, 0); color: rgb(100, 0, 0); }
to { background-color: rgb(0, 200, 0); color: rgb(200, 0, 0); }
}
a {
animation-name: color_and_bg_animation;
animation-duration: 1000s;
animation-delay: -500s;
animation-timing-function: steps(2, end);
}
a:visited {
color: white !important;
}
</style>
<a href="#unvisited">Unvisited</a>
<a href="">Visited</a>

View file

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html>
<link href="support/flexbox.css" rel="stylesheet">
<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#valdef-align-items-baseline">
<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#valdef-flex-direction-column">
<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#valdef-flex-wrap-wrap-reverse">
<link rel="match" href="reference/align-baseline-ref.html">
<style>
body {
margin: 0;
}
</style>
<body>
<div class='flexbox column align-items-baseline'>
<h1>This text</h1>
<p>should be left aligned.</p>
</div>
<div class='flexbox column align-items-baseline wrap-reverse'>
<h1>This text</h1>
<p>should be right aligned.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html>
<link href="../support/flexbox.css" rel="stylesheet">
<style>
body {
margin: 0;
}
</style>
<body>
<div class='flexbox column align-items-flex-start'>
<h1>This text</h1>
<p>should be left aligned.</p>
</div>
<div class='flexbox column align-items-flex-start wrap-reverse'>
<h1>This text</h1>
<p>should be right aligned.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<title>item's min/max cross sizes</title>
<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#definite-sizes" title="Bullet 1">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<meta name="flags" content="" />
<meta name="assert" content="specified max cross size on stretched items is honored pre-flexing" />
<style>
.inline-block {
display: inline-block;
width: 40px;
height: 50px;
}
#reference-overlapped-red {
position: absolute;
background-color: red;
width: 100px;
height: 100px;
z-index: -1;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div id="reference-overlapped-red"></div>
<div style="display:flex; flex-direction: column; width: 100px; background: green">
<div style="max-width: 50px; line-height: 0px;">
<!-- An engine where these inline blocks don't wrap will give green height 50px. -->
<div class=inline-block></div><div class=inline-block></div>
</div>
</div>

View file

@ -0,0 +1,33 @@
<!DOCTYPE html>
<title>item's min/max cross sizes</title>
<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#definite-sizes" title="Bullet 1">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<meta name="flags" content="" />
<meta name="assert" content="specified max cross size on ortho stretched items is honored pre-flexing" />
<style>
.inline-block {
display: inline-block;
width: 50px;
height: 55px;
}
#reference-overlapped-red {
position: absolute;
background-color: red;
width: 100px;
height: 100px;
z-index: -1;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div id="reference-overlapped-red"></div>
<div style="display:flex; height: 110px;">
<div style="writing-mode: vertical-lr; max-height: 100px; line-height: 0px; background: green;">
<div class=inline-block></div><div class=inline-block></div>
</div>
</div>

View file

@ -0,0 +1,24 @@
<!DOCTYPE html>
<title>item's min/max cross sizes</title>
<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#definite-sizes" title="Bullet 1">
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
<meta name="flags" content="" />
<meta name="assert" content="specified min cross size on stretched items is honored pre-flexing" />
<style>
.inline-block {
display: inline-block;
width: 1px;
height: 100px;
}
</style>
<p>Test passes if there is a filled green square.</p>
<div style="display:flex; flex-direction: column; width: 0px;">
<div style="background: green; min-width: 100px; line-height: 0px;">
<div class=inline-block></div><div class=inline-block></div>
</div>
</div>

View file

@ -0,0 +1,49 @@
<!DOCTYPE html>
<html>
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-grid/#typedef-auto-repeat">
<head>
<style>
.grid-container {
height: 30px;
width: 300px;
border-bottom: 2px solid #cfbfcf;
}
.grid-container > * { float: left; height: 30px; }
.grid-container > :nth-child(2n) { background: sienna; }
.grid-container > :nth-child(2n + 1) { background: orange; }
</style>
</head>
<body>
<p>The test passes if it has the same visual effect as reference.</p>
<div class="grid-container">
<div style="width: 10px;"></div>
<div style="width: 20px;"></div>
<div style="width: 30px;"></div>
<div style="width: 40px;"></div>
<div style="width: 30px;"></div>
<div style="width: 40px;"></div>
</div>
<div class="grid-container">
<div style="width: 10px;"></div>
<div style="width: 20px;"></div>
<div style="width: 30px;"></div>
<div style="width: 40px;"></div>
<div style="width: 30px;"></div>
<div style="width: 50px; margin-left: 40px;"></div>
</div>
<div class="grid-container">
<div style="width: 20px; margin-left: 10px"></div>
<div style="width: 30px;"></div>
<div style="width: 30px; margin-left: 40px;"></div>
<div style="width: 40px;"></div>
<div style="width: 50px;"></div>
<div style="width: 60px;"></div>
</div>
</body>
</html>

View file

@ -0,0 +1,62 @@
<!DOCTYPE html>
<html>
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-grid/#typedef-auto-repeat">
<link rel="match" href="grid-auto-repeat-multiple-values-002-ref.html">
<head>
<style>
.holder {
height: 30px;
width: 300px;
border-bottom: 2px solid #cfbfcf;
}
.grid-container {
display: grid;
grid-template-columns: 10px 20px repeat(auto-fill, 30px 40px) 50px 60px;
grid-template-rows: repeat(auto-fill, minmax(30px, auto));
}
.grid-container > :nth-child(2n) { background: sienna; }
.grid-container > :nth-child(2n+1) { background: orange; }
</style>
</head>
<body>
<p>The test passes if it has the same visual effect as reference.</p>
<div class="holder">
<div class="grid-container">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div style="grid-column: 7;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="grid-column: 2;"></div>
<div></div>
<div style="grid-column: 5;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,104 @@
<!DOCTYPE html>
<html>
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-grid/#typedef-auto-repeat">
<head>
<style>
.grid-container {
height: 30px;
width: 300px;
border-bottom: 2px solid #cfbfcf;
}
.grid-container > * { float: left; height: 30px; }
.grid-container > :nth-child(2n) { background: sienna; }
.grid-container > :nth-child(2n + 1) { background: orange; }
.auto-fit-long {
width: 650px;
}
.auto-fit-long > :nth-child(2n) { width: 30px; }
.auto-fit-long > :nth-child(2n+1) { width: 40px; }
.auto-medium-fit {
width: 510px;
}
</style>
</head>
<body>
<p>The test passes if it has the same visual effect as reference.</p>
<div class="grid-container">
<div style="width: 10px;"></div>
<div style="width: 20px;"></div>
<div style="width: 30px;"></div>
<div style="width: 40px;"></div>
<div style="width: 30px;"></div>
<div style="width: 40px;"></div>
</div>
<div class="grid-container">
<div style="width: 10px;"></div>
<div style="width: 20px;"></div>
<div style="width: 30px;"></div>
<div style="width: 40px;"></div>
<div style="width: 30px;"></div>
<div style="width: 50px;"></div>
</div>
<div class="grid-container auto-fit-long">
<div style="width: 20px; margin-left: 10px"></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div class="grid-container auto-fit-long">
<div style="width: 20px; margin-left: 10px"></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div class="grid-container auto-fit-long">
<div style="width: 20px; margin-left: 10px"></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div class="grid-container">
<div style="width: 20px; margin-left: 10px"></div>
<div style="width: 30px;"></div>
<div style="width: 30px;"></div>
<div style="width: 40px;"></div>
<div style="width: 50px;"></div>
<div style="width: 60px;"></div>
</div>
<div class="grid-container">
<div style="width: 10px;"></div>
<div style="width: 20px;"></div>
<div style="width: 30px;"></div>
<div style="width: 40px;"></div>
<div style="width: 50px;"></div>
<div style="width: 60px;"></div>
</div>
<div class="grid-container">
<div style="width: 40px; margin-left: 30px"></div>
<div style="width: 30px;"></div>
<div style="width: 40px;"></div>
<div style="width: 50px;"></div>
<div style="width: 60px;"></div>
</div>
<div class="grid-container auto-medium-fit">
<div style="width: 10px;"></div>
<div style="width: 110px; margin-left: 20px"></div>
<div style="width: 30px;"></div>
</div>
</body>
</html>

View file

@ -0,0 +1,127 @@
<!DOCTYPE html>
<html>
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-grid/#typedef-auto-repeat">
<link rel="match" href="grid-auto-repeat-multiple-values-003-ref.html">
<head>
<style>
.holder {
height: 30px;
width: 300px;
border-bottom: 2px solid #cfbfcf;
}
.wide-holder {
height: 30px;
width: 650px;
border-bottom: 2px solid #cfbfcf;
}
.grid-container {
display: grid;
grid-template-columns: 10px 20px repeat(auto-fit, 30px 40px) 50px 60px;
grid-template-rows: repeat(auto-fill, minmax(30px, auto));
}
.grid-container > :nth-child(2n) { background: sienna; }
.grid-container > :nth-child(2n+1) { background: orange; }
</style>
</head>
<body>
<p>The test passes if it has the same visual effect as reference.</p>
<div class="holder">
<div class="grid-container">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div style="grid-column: 7;"></div>
</div>
</div>
<!-- Test correct tracking of collapsed tracks -->
<div class="holder" style="width: 650px">
<div class="grid-container">
<div style="grid-column: 2;"></div>
<div></div>
<div style="grid-column: 6;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder" style="width: 650px">
<div class="grid-container">
<div style="grid-column: 2;"></div>
<div></div>
<div style="grid-column: 10;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder" style="width: 650px">
<div class="grid-container">
<div style="grid-column: 2;"></div>
<div></div>
<div style="grid-column: 12;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="grid-column: 2;"></div>
<div></div>
<div style="grid-column: 5;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div></div>
<div></div>
<div style="grid-column: 5;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<!-- Test correct tracking of collapsed tracks when the grid begins in the middle of the repeat. -->
<div class="holder">
<div class="grid-container">
<div style="grid-column: 4;"></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<!-- Test grid span with correct tracking of collapsed tracks. -->
<div class="holder" style="width: 510px">
<div class="grid-container">
<div></div>
<div style="grid-column: 4 / 7;"></div>
<div></div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,216 @@
<!DOCTYPE html>
<meta charset="utf-8">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://www.w3.org/TR/css-grid-1/#named-lines" title="5.1.1. Named Grid Lines: the '(&lt;custom-ident\&gt;*)' syntax">
<link rel="help" href="https://www.w3.org/TR/css-grid-1/#valdef-repeat-auto-fill" title="7.2.2.2. Repeat-to-fill: 'auto-fill' and 'auto-fit' repetitions">
<style>
.holder {
width: 300px;
height: 20px;
border-bottom: 2px solid #cfbfcf;
}
.holder > :nth-child(2) {
clear: left; /* Forces the div to a new line to simulate a new grid row. */
padding-top: 2px; /* Simulates the grid row gap. */
}
.grid-container > * { float: left; height: 8px; }
.grid-container > :nth-child(3n) { background: sienna; }
.grid-container > :nth-child(3n+1) { background: gold; }
.grid-container > :nth-child(3n+2) { background: orange; }
.alt-color > :nth-child(2n) { background: sienna; }
.alt-color > :nth-child(2n+1) { background: orange; }
.invis { width: 0px; visibility: none; }
</style>
<p>The test passes if it has the same visual effect as reference.</p>
<div class="holder">
<div class="grid-container">
<div style="width:30px; margin-left:30px"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:50px; margin-left:170px"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:30px; margin-left:30px"></div>
<div style="width:30px; margin-left:40px"></div>
<div style="width:40px;"></div>
<div style="width:50px;"></div>
<div style="width:60px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:10px;"></div>
<div style="width:30px; margin-left:20px"></div>
<div style="width:30px; margin-left:40px"></div>
<div style="width:40px;"></div>
<div style="width:50px;"></div>
<div style="width:60px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:30px; margin-left:30px"></div>
<div style="width:50px; margin-left:110px"></div>
<div style="width:60px;"></div>
</div>
<div class="grid-container">
<div style="width:10px"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:10px;"></div>
<div style="width:30px; margin-left:20px"></div>
<div style="width:50px; margin-left:110px"></div>
<div style="width:60px;"></div>
</div>
<div class="grid-container">
<div class="invis"></div>
<div style="width:10px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:50px; margin-left:10px;"></div>
<div style="width:40px;"></div>
<div style="width:30px;"></div>
<div style="width:40px;"></div>
<div style="width:50px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:90px; margin-left:10px;"></div>
<div style="width:30px;"></div>
<div style="width:40px;"></div>
<div style="width:50px;"></div>
<div style="width:60px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div class="invis"></div>
<div style="width:10px;"></div>
<div class="invis"></div>
<div style="width:90px;"></div>
<div class="invis"></div>
<div style="width:30px;"></div>
<div style="width:40px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container alt-color">
<div class="invis"></div>
<div style="width:10px;"></div>
<div style="width:120px;"></div>
<div style="width:40px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:10px;"></div>
<div style="width:90px;"></div>
<div style="width:30px;"></div>
<div style="width:40px;"></div>
<div style="width:50px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div class="invis"></div>
<div style="width:10px;"></div>
<div class="invis"></div>
<div style="width:50px;"></div>
<div class="invis"></div>
<div style="width:40px;"></div>
<div style="width:30px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container alt-color">
<div class="invis"></div>
<div style="width:10px;"></div>
<div style="width:90px;"></div>
<div style="width:30px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:10px;"></div>
<div style="width:50px;"></div>
<div style="width:40px;"></div>
<div style="width:30px;"></div>
<div style="width:40px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:10px;"></div>
<div style="width:20px;"></div>
<div style="width:140px;"></div>
<div style="width:50px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:10px;"></div>
<div class="invis"></div>
<div style="width:20px;"></div>
<div class="invis"></div>
<div style="width:140px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container alt-color">
<div style="width:30px;"></div>
<div style="width:140px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div class="invis"></div>
<div style="width:10px;"></div>
<div class="invis"></div>
<div style="width:140px; margin-left:20px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div class="invis"></div>
<div style="width:10px;"></div>
<div class="invis"></div>
<div style="width:210px;"></div>
</div>
</div>

View file

@ -0,0 +1,219 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Grid Layout Test: Support for named grid lines when 'grid-template-columns' and 'grid-template-rows' have multiple values inside of a repeat.</title>
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://www.w3.org/TR/css-grid-1/#named-lines" title="5.1.1. Named Grid Lines: the '(&lt;custom-ident\&gt;*)' syntax">
<link rel="help" href="https://www.w3.org/TR/css-grid-1/#valdef-repeat-auto-fill" title="7.2.2.2. Repeat-to-fill: 'auto-fill' and 'auto-fit' repetitions">
<link rel="match" href="grid-support-named-grid-lines-002-ref.html">
<style>
.holder {
width: 300px;
height: 20px;
border-bottom: 2px solid #cfbfcf;
}
.grid-container {
display: grid;
/*
Defines the grid areas 'repeat', which covers the repeat only, and
'around-repeat' which covers the repeat and one track on either end.
Provides the line name 'all' in every track, the line names 'v' and 'u'
which alternate in every grid line.
*/
grid-template-columns: [v] 10px [around-repeat-start a t-start w-start u all] 20px [repeat-start b] repeat(auto-fill, [all x v] 30px [all w-end y u] 40px [all t-end z]) [repeat-end c v] 50px [around-repeat-end all d u] 60px [e v];
grid-template-rows:
[w-start t-start around-repeat-start repeat-start]
repeat(auto-fill, 8px)
[w-end t-end around-repeat-end repeat-end ]
8px;
grid-row-gap: 2px;
}
.grid-container > :nth-child(3n) { background: sienna; }
.grid-container > :nth-child(3n+1) { background: gold; }
.grid-container > :nth-child(3n+2) { background: orange; }
/* Alternate colors for some grid containers, where sometimes multiple grid
items would appear as one item or the actual ordering would be ambiguous
otherwise. */
.alt-color > :nth-child(2n) { background: sienna; }
.alt-color > :nth-child(2n+1) { background: orange; }
</style>
<p>The test passes if it has the same visual effect as reference.</p>
<!-- Use the line names just before and just after the repeat. -->
<div class="holder">
<div class="grid-container">
<div style="grid-column:b / span 1"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="grid-column:c / span 1"></div>
</div>
</div>
<!-- Use line names that are inside a repeat. -->
<div class="holder">
<div class="grid-container">
<div style="grid-column-start:x"></div>
<div style="grid-column-start:z"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div></div>
<div style="grid-column-start:x"></div>
<div style="grid-column-start:z"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="grid-column-start:x 1"></div>
<div style="grid-column-start:z 2"></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div></div>
<div style="grid-column-start:x 1"></div>
<div style="grid-column-start:z 2"></div>
<div></div>
<div></div>
</div>
</div>
<!-- Using a span that goes from outside a repeat to inside the repeat. -->
<div class="holder">
<div class="grid-container">
<div style="grid-column:u / y"></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="grid-column:u / z"></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<!-- Using an area which has one end inside the repeat. -->
<div class="holder">
<div class="grid-container">
<div style="grid-area: t;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container alt-color">
<div style="grid-area: t;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div></div>
<div style="grid-area: t;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="grid-area: w;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container alt-color">
<div style="grid-area: w;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div></div>
<div style="grid-area: w;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<!-- Using an area which spans the entire repeat. -->
<div class="holder">
<div class="grid-container">
<div></div>
<div></div>
<div style="grid-area: repeat;"></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div></div>
<div style="grid-area: repeat;"></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container alt-color">
<div></div>
<div style="grid-area: repeat;"></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="grid-area: repeat;"></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="grid-area: around-repeat;"></div>
<div></div>
</div>
</div>

View file

@ -0,0 +1,222 @@
<!DOCTYPE html>
<meta charset="utf-8">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://www.w3.org/TR/css-grid-1/#named-lines" title="5.1.1. Named Grid Lines: the '(&lt;custom-ident\&gt;*)' syntax">
<link rel="help" href="https://www.w3.org/TR/css-grid-1/#valdef-repeat-auto-fill" title="7.2.2.2. Repeat-to-fill: 'auto-fill' and 'auto-fit' repetitions">
<style>
.holder {
width: 300px;
height: 20px;
border-bottom: 2px solid #cfbfcf;
}
.holder > :nth-child(2) {
clear: left; /* Forces the div to a new line to simulate a new grid row. */
padding-top: 2px; /* Simulates the grid row gap. */
}
.grid-container > * { float: left; height: 8px; }
.grid-container > :nth-child(3n) { background: sienna; }
.grid-container > :nth-child(3n+1) { background: gold; }
.grid-container > :nth-child(3n+2) { background: orange; }
.alt-color > :nth-child(2n) { background: sienna; }
.alt-color > :nth-child(2n+1) { background: orange; }
.invis { width: 0px; visibility: none; }
</style>
<p>The test passes if it has the same visual effect as reference.</p>
<div class="holder">
<div class="grid-container">
<div style="width:30px; margin-left:30px"></div>
<div style="width:30px;"></div>
<div style="width:40px;"></div>
<div style="width:50px;"></div>
<div style="width:60px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:10px;"></div>
<div style="width:30px; margin-left:20px"></div>
<div style="width:30px;"></div>
<div style="width:40px;"></div>
<div style="width:50px;"></div>
<div style="width:60px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:30px; margin-left:30px"></div>
<div style="width:50px;"></div>
<div style="width:60px;"></div>
</div>
<div class="grid-container">
<div style="width:10px"></div>
<div style="width:20px"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:10px;"></div>
<div style="width:30px; margin-left:20px;"></div>
<div style="width:50px;"></div>
<div style="width:60px;"></div>
</div>
<div class="grid-container">
<div class="invis"></div>
<div style="width:10px"></div>
<div style="width:20px"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:50px; margin-left:10px;"></div>
<div style="width:40px;"></div>
<div style="width:30px;"></div>
<div style="width:40px;"></div>
<div style="width:50px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:90px; margin-left:10px;"></div>
<div style="width:30px;"></div>
<div style="width:40px;"></div>
<div style="width:50px;"></div>
<div style="width:60px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div class="invis"></div>
<div style="width:10px;"></div>
<div class="invis"></div>
<div style="width:90px;"></div>
<div class="invis"></div>
<div style="width:30px;"></div>
<div style="width:40px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container alt-color">
<div class="invis"></div>
<div style="width:10px;"></div>
<div style="width:120px;"></div>
<div style="width:40px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:10px;"></div>
<div style="width:90px;"></div>
<div style="width:30px;"></div>
<div style="width:40px;"></div>
<div style="width:50px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div class="invis"></div>
<div style="width:10px;"></div>
<div class="invis"></div>
<div style="width:50px;"></div>
<div class="invis"></div>
<div style="width:40px;"></div>
<div style="width:30px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container alt-color">
<div class="invis"></div>
<div style="width:10px;"></div>
<div style="width:90px;"></div>
<div style="width:30px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:10px;"></div>
<div style="width:50px;"></div>
<div style="width:40px;"></div>
<div style="width:30px;"></div>
<div style="width:40px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:10px;"></div>
<div style="width:20px;"></div>
<div style="width:140px;"></div>
<div style="width:50px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:10px;"></div>
<div class="invis"></div>
<div style="width:20px;"></div>
<div class="invis"></div>
<div style="width:140px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container alt-color">
<div style="width:30px;"></div>
<div style="width:140px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div class="invis"></div>
<div style="width:10px;"></div>
<div class="invis"></div>
<div style="width:140px; margin-left:20px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="width:10px;"></div>
<div style="width:210px;"></div>
<div style="width:60px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container alt-color">
<div style="width:10px;"></div>
<div style="width:210px;"></div>
<div style="width:60px;"></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div class="invis"></div>
<div style="width:10px;"></div>
<div class="invis"></div>
<div style="width:210px;"></div>
</div>
</div>

View file

@ -0,0 +1,224 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Grid Layout Test: Support for named grid lines when 'grid-template-columns' and 'grid-template-rows' have multiple values inside of a repeat.</title>
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://www.w3.org/TR/css-grid-1/#named-lines" title="5.1.1. Named Grid Lines: the '(&lt;custom-ident\&gt;*)' syntax">
<link rel="help" href="https://www.w3.org/TR/css-grid-1/#valdef-repeat-auto-fill" title="7.2.2.2. Repeat-to-fill: 'auto-fill' and 'auto-fit' repetitions">
<link rel="match" href="grid-support-named-grid-lines-003-ref.html">
<style>
.holder {
width: 300px;
height: 20px;
border-bottom: 2px solid #cfbfcf;
}
.grid-container {
display: grid;
/*
Defines the grid areas 'repeat', which covers the repeat only, and
'around-repeat' which covers the repeat and one track on either end.
Provides the line name 'all' in every track, the line names 'v' and 'u'
which alternates in every grid line.
*/
grid-template-columns: [v] 10px [around-repeat-start a t-start w-start u all] 20px [repeat-start b] repeat(auto-fit, [all x v] 30px [all w-end y u] 40px [all t-end z]) [repeat-end c v] 50px [around-repeat-end all d u] 60px [e v];
grid-template-rows:
[w-start t-start around-repeat-start repeat-start]
repeat(auto-fit, 8px)
[w-end t-end around-repeat-end repeat-end ]
8px;
grid-row-gap: 2px;
}
.grid-container > :nth-child(3n) { background: sienna; }
.grid-container > :nth-child(3n+1) { background: gold; }
.grid-container > :nth-child(3n+2) { background: orange; }
/* Alternate colors for some grid containers, where sometimes multiple grid
items would appear as one item or the actual ordering would be ambiguous
otherwise. */
.alt-color > :nth-child(2n) { background: sienna; }
.alt-color > :nth-child(2n+1) { background: orange; }
</style>
<p>The test passes if it has the same visual effect as reference.</p>
<!-- Use line names that are inside a repeat. -->
<div class="holder">
<div class="grid-container">
<div style="grid-column-start:x"></div>
<div style="grid-column-start:z"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div></div>
<div style="grid-column-start:x"></div>
<div style="grid-column-start:z"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="grid-column-start:x 1"></div>
<div style="grid-column-start:z 2"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div></div>
<div style="grid-column-start:x 1"></div>
<div style="grid-column-start:z 2"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<!-- Using a span that goes from outside a repeat to inside the repeat. -->
<div class="holder">
<div class="grid-container">
<div style="grid-column:u / y"></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="grid-column:u / z"></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<!-- Using an area which has one end inside the repeat. -->
<div class="holder">
<div class="grid-container">
<div style="grid-area: t;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container alt-color">
<div style="grid-area: t;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div></div>
<div style="grid-area: t;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="grid-area: w;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container alt-color">
<div style="grid-area: w;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div></div>
<div style="grid-area: w;"></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<!-- Using an area which spans the entire repeat. -->
<div class="holder">
<div class="grid-container">
<div></div>
<div></div>
<div style="grid-area: repeat;"></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div></div>
<div style="grid-area: repeat;"></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container alt-color">
<div></div>
<div style="grid-area: repeat;"></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="grid-area: repeat;"></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div></div>
<div style="grid-area: around-repeat;"></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container alt-color">
<div></div>
<div style="grid-area: around-repeat;"></div>
<div></div>
</div>
</div>
<div class="holder">
<div class="grid-container">
<div style="grid-area: around-repeat;"></div>
<div></div>
</div>
</div>

View file

@ -80,6 +80,12 @@ test_computed_value("grid-template-columns", 'repeat(auto-fill, minmax(100px, 5f
'100px [two] 100px [two] 100px [two]'); '100px [two] 100px [two] 100px [two]');
test_computed_value("grid-template-columns", 'repeat(auto-fit, [three] minmax(max-content, 6em) [four])', test_computed_value("grid-template-columns", 'repeat(auto-fit, [three] minmax(max-content, 6em) [four])',
'[three] 240px [four]'); '[three] 240px [four]');
test_computed_value('grid-template-columns', '[a] 21px [b] repeat(auto-fill, [c] 22px [d] 23px [e]) [f] 24px [g]',
'[a] 21px [b c] 22px [d] 23px [e c] 22px [d] 23px [e c] 22px [d] 23px [e c] 22px [d] 23px [e c] 22px [d] 23px [e f] 24px [g]');
test_computed_value('grid-template-columns', '[a] 21px [b c] repeat(auto-fill, [d e] 22px [f g h] 23px [i j k l]) [m n] 24px [o]',
'[a] 21px [b c d e] 22px [f g h] 23px [i j k l d e] 22px [f g h] 23px [i j k l d e] 22px [f g h] 23px [i j k l d e] 22px [f g h] 23px [i j k l d e] 22px [f g h] 23px [i j k l m n] 24px [o]');
test_computed_value('grid-template-columns', '[a] repeat(2, [b] 20px [c d] 21px [e f g]) [h i] repeat(auto-fit, [j] 22px [k l m] 23px [n o p q]) [r s]',
'[a b] 20px [c d] 21px [e f g b] 20px [c d] 21px [e f g h i j] 0px [k l m] 0px [n o p q j] 0px [k l m] 0px [n o p q j] 0px [k l m] 0px [n o p q j] 0px [k l m] 0px [n o p q r s]');
// <auto-track-list> = // <auto-track-list> =
// [ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>? // [ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>?

View file

@ -0,0 +1,57 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Grid Layout Test: getComputedStyle().gridTemplateColumns</title>
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-template-columns">
<meta name="assert" content="grid-template-columns computed value is the keyword none or a computed track list.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/computed-testcommon.js"></script>
<script src="/css/css-grid/support/grid-child-utils.js"></script>
<style>
#target {
display: grid;
width: 32px;
height: 10px;
};
</style>
</head>
<body>
<div id="container">
<div id="target">
<div></div>
<div></div>
<div id="child"></div>
<div style="grid-column: 7"></div>
<div></div>
</div>
</div>
<script>
let autoFitTester = new GridChildHelper(gridChildHelperCol,
"[a] 1px [b] 2px [c d] repeat(auto-fit, [e f] 3px [g] 4px [h]) [i] 5px [k] 6px [l m] ");
let autoFillTester = new GridChildHelper(gridChildHelperCol,
"[a] 1px [b] 2px [c d] repeat(auto-fill, [e f] 3px [g] 4px [h]) [i] 5px [k] 6px [l m] ");
// Auto-fit
autoFitTester.runTest(3, "[a] 1px [b] 2px [c d e f] 3px [g] 0px [h e f] 0px [g] 0px [h i] 5px [k] 6px [l m]");
autoFitTester.runTest(4, "[a] 1px [b] 2px [c d e f] 0px [g] 4px [h e f] 0px [g] 0px [h i] 5px [k] 6px [l m]");
autoFitTester.runTest(5, "[a] 1px [b] 2px [c d e f] 0px [g] 0px [h e f] 3px [g] 0px [h i] 5px [k] 6px [l m]");
autoFitTester.runTest(6, "[a] 1px [b] 2px [c d e f] 0px [g] 0px [h e f] 0px [g] 4px [h i] 5px [k] 6px [l m]");
autoFitTester.runTest("4 / 5", "[a] 1px [b] 2px [c d e f] 0px [g] 4px [h e f] 0px [g] 0px [h i] 5px [k] 6px [l m]");
autoFitTester.runTest("4 / 6", "[a] 1px [b] 2px [c d e f] 0px [g] 4px [h e f] 3px [g] 0px [h i] 5px [k] 6px [l m]");
autoFitTester.runTest("3 / 6", "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h e f] 3px [g] 0px [h i] 5px [k] 6px [l m]");
// Auto-fill. These tests are semi-redundant, but should still pass.
autoFillTester.runTest(3, "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h e f] 3px [g] 4px [h i] 5px [k] 6px [l m]");
autoFillTester.runTest(4, "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h e f] 3px [g] 4px [h i] 5px [k] 6px [l m]");
autoFillTester.runTest(5, "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h e f] 3px [g] 4px [h i] 5px [k] 6px [l m]");
autoFillTester.runTest("4 / 7", "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h e f] 3px [g] 4px [h i] 5px [k] 6px [l m]");
autoFillTester.runTest("3 / 6", "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h e f] 3px [g] 4px [h i] 5px [k] 6px [l m]");
</script>
</body>
</html>

View file

@ -0,0 +1,85 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Grid Layout Test: getComputedStyle().gridTemplateColumns</title>
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-template-columns">
<meta name="assert" content="grid-template-columns computed value is the keyword none or a computed track list.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/computed-testcommon.js"></script>
<script src="/css/css-grid/support/grid-child-utils.js"></script>
<style>
#target {
display: grid;
width: 54px;
height: 32px;
};
</style>
</head>
<body>
<div id="container">
<div id="target">
<div></div>
<div></div>
<div style="grid-column: 4"></div>
<div id="child"></div>
<div style="grid-column: 10"></div>
<div></div>
</div>
</div>
<script>
// Style with 3 repeat tracks.
let style3 =
"[a] 1px [b] 2px [c d] repeat(auto-fit, [e f] 3px [g] 4px [h] 5px [i j]) [k] 7px [k] 8px [l m]";
let col3Tester = new GridChildHelper(gridChildHelperCol, style3);
let rowTester = new GridChildHelper(gridChildHelperRow, style3);
// Style with 2 repeat tracks.
let style2 =
"[a] 1px [b] 2px [c d] repeat(auto-fit, [e f] 3px [g] 4px [h]) [i j] 7px [k] 8px [l m]";
let col2Tester = new GridChildHelper(gridChildHelperCol, style2);
rowTester.runTest(3,
"[a] 1px [b] 2px [c d e f] 3px [g] 0px [h] 0px [i j k] 7px [k] 8px [l m]");
rowTester.runTest(5,
"[a] 1px [b] 2px [c d e f] 0px [g] 0px [h] 5px [i j k] 7px [k] 8px [l m]");
rowTester.runTest("3 / 8",
"[a] 1px [b] 2px [c d e f] 3px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
rowTester.runTest("4 / span 2",
"[a] 1px [b] 2px [c d e f] 0px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
rowTester.runTest("4 / 5",
"[a] 1px [b] 2px [c d e f] 0px [g] 4px [h] 0px [i j k] 7px [k] 8px [l m]");
col3Tester.runTest(3,
"[a] 1px [b] 2px [c d e f] 3px [g] 4px [h] 0px [i j e f] 0px [g] 0px [h] 0px [i j e f] 0px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
col3Tester.runTest(6,
"[a] 1px [b] 2px [c d e f] 0px [g] 4px [h] 0px [i j e f] 3px [g] 0px [h] 0px [i j e f] 0px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
col3Tester.runTest("3 / 8",
"[a] 1px [b] 2px [c d e f] 3px [g] 4px [h] 5px [i j e f] 3px [g] 4px [h] 0px [i j e f] 0px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
col3Tester.runTest("5 / span 2",
"[a] 1px [b] 2px [c d e f] 0px [g] 4px [h] 5px [i j e f] 3px [g] 0px [h] 0px [i j e f] 0px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
col3Tester.runTest("7 / span 2",
"[a] 1px [b] 2px [c d e f] 0px [g] 4px [h] 0px [i j e f] 0px [g] 4px [h] 5px [i j e f] 0px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
col3Tester.runTest("5 / 8",
"[a] 1px [b] 2px [c d e f] 0px [g] 4px [h] 5px [i j e f] 3px [g] 4px [h] 0px [i j e f] 0px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
col3Tester.runTest("8 / 10",
"[a] 1px [b] 2px [c d e f] 0px [g] 4px [h] 0px [i j e f] 0px [g] 0px [h] 5px [i j e f] 3px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
col2Tester.runTest(3,
"[a] 1px [b] 2px [c d e f] 3px [g] 4px [h e f] 0px [g] 0px [h e f] 0px [g] 0px [h e f] 0px [g] 4px [h e f] 3px [g] 0px [h i j] 7px [k] 8px [l m]");
col2Tester.runTest(6,
"[a] 1px [b] 2px [c d e f] 0px [g] 4px [h e f] 0px [g] 4px [h e f] 0px [g] 0px [h e f] 0px [g] 4px [h e f] 3px [g] 0px [h i j] 7px [k] 8px [l m]");
col2Tester.runTest("3 / 8",
"[a] 1px [b] 2px [c d e f] 3px [g] 4px [h e f] 3px [g] 4px [h e f] 3px [g] 0px [h e f] 0px [g] 4px [h e f] 3px [g] 0px [h i j] 7px [k] 8px [l m]");
col2Tester.runTest("6 / span 2",
"[a] 1px [b] 2px [c d e f] 0px [g] 4px [h e f] 0px [g] 4px [h e f] 3px [g] 0px [h e f] 0px [g] 4px [h e f] 3px [g] 0px [h i j] 7px [k] 8px [l m]");
col2Tester.runTest("5 / 10",
"[a] 1px [b] 2px [c d e f] 0px [g] 4px [h e f] 3px [g] 4px [h e f] 3px [g] 4px [h e f] 3px [g] 4px [h e f] 3px [g] 0px [h i j] 7px [k] 8px [l m]");
</script>
</body>
</html>

View file

@ -0,0 +1,49 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Grid Layout Test: getComputedStyle().gridTemplateColumns</title>
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-grid-2/#resolved-track-list" "title"="2.3. Resolved Value of a Track Listing">
<meta name="assert" content="Checks the resolved value of grid-template-columns or grid-template-columns on an element which is not a grid container.">
<style>
#target {
display: block;
height: 1px;
font-size: 1px;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/computed-testcommon.js"></script>
<div id="target"></div>
<script>
test_computed_value("grid-template-columns", "subgrid [a]");
test_computed_value("grid-template-columns", "subgrid [a] [b]");
test_computed_value("grid-template-columns", "subgrid [a] [b] [b] [c]");
test_computed_value("grid-template-columns", "subgrid [a] [b c d] [e f] [e f] [g]");
test_computed_value("grid-template-columns", "subgrid [a b c] [d] [e f]");
test_computed_value("grid-template-columns", "subgrid repeat(auto-fill, [c])");
test_computed_value("grid-template-columns", "subgrid repeat(auto-fill, [c]) [g] [h i]");
test_computed_value("grid-template-columns", "subgrid [a] repeat(auto-fill, [c]) [g] [h i]");
test_computed_value("grid-template-columns", "subgrid [a b] repeat(auto-fill, [c]) [g]");
test_computed_value("grid-template-columns", "subgrid [a] [b] repeat(auto-fill, [c]) [g h]");
test_computed_value("grid-template-columns", "subgrid [a] [b] repeat(auto-fill, [c])");
test_computed_value("grid-template-columns", "subgrid repeat(auto-fill, [c d])");
test_computed_value("grid-template-columns", "subgrid repeat(auto-fill, [c d]) [g] [h i]");
test_computed_value("grid-template-columns", "subgrid [a] repeat(auto-fill, [c d]) [g] [h i]");
test_computed_value("grid-template-columns", "subgrid [a b] repeat(auto-fill, [c d]) [g]");
test_computed_value("grid-template-columns", "subgrid [a] [b] repeat(auto-fill, [c d]) [g h]");
test_computed_value("grid-template-columns", "subgrid [a] [b] repeat(auto-fill, [c d])");
test_computed_value("grid-template-columns", "subgrid repeat(auto-fill, [c] [d])");
test_computed_value("grid-template-columns", "subgrid repeat(auto-fill, [c] [d]) [g] [h i]");
test_computed_value("grid-template-columns", "subgrid [a] repeat(auto-fill, [c] [d]) [g] [h i]");
test_computed_value("grid-template-columns", "subgrid [a b] repeat(auto-fill, [c] [d]) [g]");
test_computed_value("grid-template-columns", "subgrid [a] [b] repeat(auto-fill, [c] [d]) [g h]");
test_computed_value("grid-template-columns", "subgrid [a] [b] repeat(auto-fill, [c] [d])");
test_computed_value("grid-template-columns", "subgrid repeat(auto-fill, [c] [d e])");
test_computed_value("grid-template-columns", "subgrid repeat(auto-fill, [c] [d e]) [g] [h i]");
test_computed_value("grid-template-columns", "subgrid [a] repeat(auto-fill, [c] [d e]) [g] [h i]");
test_computed_value("grid-template-columns", "subgrid [a b] repeat(auto-fill, [c] [d e]) [g]");
test_computed_value("grid-template-columns", "subgrid [a] [b] repeat(auto-fill, [c] [d e]) [g h]");
test_computed_value("grid-template-columns", "subgrid [a] [b] repeat(auto-fill, [c] [d e])");
</script>

View file

@ -0,0 +1,322 @@
<!DOCTYPE HTML>
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<html>
<head>
<style>
html,body {
color:black; background-color:white; font:10px/1 monospace; padding:0; margin:0;
}
.grid {
display: inline-grid;
grid-auto-columns: 15px;
border: 1px solid;
}
.subgrid {
display: grid;
grid-column: 3 / span 4;
grid-auto-rows: 8px;
background: grey;
}
.fill-0a { grid-template-columns: subgrid [z] [z] [z] [z] [z] } /* [z] [z] [z] [z] [z] */
.fill-0b { grid-template-columns: subgrid [z] [z] [z] [z] [z] } /* [z] [z] [z] [z] [z] */
.fill-0c { grid-template-columns: subgrid [x] [y] [y] [y] [z] } /* [x] [y] [y] [y] [z] */
.fill-0d { grid-template-columns: subgrid [x] [z] [z] [z] [z] } /* [x] [z] [z] [z] [z] */
.fill-0e { grid-template-columns: subgrid [x] [x] [x] [x] [z] } /* [x] [x] [x] [x] [z] */
.fill-0f { grid-template-columns: subgrid [x] [x] [z] [z] [z] } /* [x] [x] [z] [z] [z] */
.fill-0g { grid-template-columns: subgrid [x] [y] [z] [z] } /* [x] [y] [z] [z] [] */
.fill-0h { grid-template-columns: subgrid [x] [y] [x] [y] [z] } /* [x] [y] [x] [y] [z] */
.fill-0i { grid-template-columns: subgrid [x] [y] [x] [y] } /* [x] [y] [x] [y] [] */
.fill-0j { grid-template-columns: subgrid [y] [y] [y] [z] [z] } /* [y] [y] [y] [z] [z] */
.fill-0k { grid-template-columns: subgrid [x] [y] [z] [z] } /* [x] [y] [z] [z] [] */
.fill-0l { grid-template-columns: subgrid [z] [x] [y] [z] } /* [z] [x] [y] [z] [] */
.fill-0m { grid-template-columns: subgrid [z] [x] [y] [x] [y] } /* [z] [x] [y] [x] [y] */
.fill-0n { grid-template-columns: subgrid [z] [z] [z] [z] [z] } /* [z] [z] [z] [z] [z] */
.fill-0o { grid-template-columns: subgrid [z] [x] [y] [z] } /* [z] [x] [y] [z] [] */
.fill-0p { grid-template-columns: subgrid [z] [x] [y] [z] [x] } /* [z] [x] [y] [z] [x] */
.fill-0q { grid-template-columns: subgrid [x] [y] [z] [x] } /* [x] [y] [z] [x] [] */
.fill-0r { grid-template-columns: subgrid [x] [y] [z] [y] [z] } /* [x] [y] [z] [y] [z] */
.fill-0s {
grid-column: 2 / span 5;
grid-template-columns: subgrid [w] [y] [z] [y] [z] [x]; /* [w] [y] [z] [y] [z] [x] */
}
.fill-0t {
grid-column: 1 / span 6;
grid-template-columns: subgrid [w] [y] [z] [y] [z] [x]; /* [w] [y] [z] [y] [z] [x] [] */
}
.subgrid > :nth-child(2n) { background: black; }
.subgrid > :nth-child(2n+1) { background: pink; }
</style>
</head>
<body>
<div class="grid"><div class="subgrid fill-0a">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0b">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0c">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0d">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0e">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0f">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0g">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0h">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0i">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0j">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0k">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0l">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0m">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0n">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0o">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0p">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0q">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0r">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0s">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0t">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
</body>

View file

@ -0,0 +1,358 @@
<!DOCTYPE HTML>
<html>
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="match" href="repeat-auto-fill-008-ref.html">
<link rel="help" href="https://drafts.csswg.org/css-grid-2/#resolved-track-list">
<head>
<style>
html,body {
color:black; background-color:white; font:10px/1 monospace; padding:0; margin:0;
}
.grid {
display: inline-grid;
grid-auto-columns: 15px;
border: 1px solid;
}
.subgrid {
display: grid;
grid-column: 3 / span 4;
grid-auto-rows: 8px;
background: grey;
}
.fill-0a { grid-template-columns: subgrid repeat(auto-fill, [y] [y]) [z] [z] [z] [z] [z] } /* [z] [z] [z] [z] [z] */
.fill-0b { grid-template-columns: subgrid [z] repeat(auto-fill, [z] [z] [z]) [z] } /* [z] [z] [z] [z] [z] */
.fill-0c { grid-template-columns: subgrid [x] repeat(auto-fill, [y] [y] [y]) [z] } /* [x] [y] [y] [y] [z] */
.fill-0d { grid-template-columns: subgrid [x] repeat(auto-fill, [z] [z]) } /* [x] [z] [z] [z] [z] */
.fill-0e { grid-template-columns: subgrid repeat(auto-fill, [x] [x]) [z] } /* [x] [x] [x] [x] [z] */
.fill-0f { grid-template-columns: subgrid repeat(auto-fill, [x] [x]) [z] [z] [z] } /* [x] [x] [z] [z] [z] */
.fill-0g { grid-template-columns: subgrid repeat(auto-fill, [x] [y]) [z] [z] } /* [x] [y] [z] [z] [] */
.fill-0h { grid-template-columns: subgrid repeat(auto-fill, [x] [y]) [z] } /* [x] [y] [x] [y] [z] */
.fill-0i { grid-template-columns: subgrid repeat(auto-fill, [x] [y]) } /* [x] [y] [x] [y] [] */
.fill-0j { grid-template-columns: subgrid repeat(auto-fill, [y]) [z] [z] } /* [y] [y] [y] [z] [z] */
.fill-0k { grid-template-columns: subgrid repeat(auto-fill, [x] [y]) [z] [z] } /* [x] [y] [z] [z] [] */
.fill-0l { grid-template-columns: subgrid [z] repeat(auto-fill, [x] [y]) [z] } /* [z] [x] [y] [z] [] */
.fill-0m { grid-template-columns: subgrid [z] repeat(auto-fill, [x] [y]) } /* [z] [x] [y] [x] [y] */
.fill-0n { grid-template-columns: subgrid repeat(auto-fill, [x] [y]) repeat(100, [z])} /* [z] [z] [z] [z] [z] */
.fill-0o { grid-template-columns: subgrid [z] repeat(auto-fill, [x] [y] [z]) } /* [z] [x] [y] [z] [] */
.fill-0p { grid-template-columns: subgrid [z] repeat(auto-fill, [x] [y] [z]) [x] } /* [z] [x] [y] [z] [x] */
.fill-0q { grid-template-columns: subgrid repeat(auto-fill, [x] [y] [z]) [x] } /* [x] [y] [z] [x] [] */
.fill-0r { grid-template-columns: subgrid [x] repeat(auto-fill, [y] [z]) } /* [x] [y] [z] [y] [z] */
/* With span of 5... */
.fill-0s {
grid-column: 2 / span 5;
grid-template-columns: subgrid [w] repeat(auto-fill, [y] [z]) [x]; /* [w] [y] [z] [y] [z] [x] */
}
/* With span of 6, same as fill-0s but with room for a partial additional repetition */
.fill-0t {
grid-column: 1 / span 6;
grid-template-columns: subgrid [w] repeat(auto-fill, [y] [z]) [x]; /* [w] [y] [z] [y] [z] [x] [] */
}
.subgrid > :nth-child(2n) { background: black; }
.subgrid > :nth-child(2n+1) { background: pink; }
</style>
</head>
<body>
<div class="grid"><div class="subgrid fill-0a">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0b">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0c">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0d">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0e">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0f">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0g">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0h">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0i">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0j">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0k">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0l">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0m">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0n">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0o">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0p">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0q">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0r">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0s">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<div class="grid"><div class="subgrid fill-0t">
<div style="grid-column:y 5"></div>
<div style="grid-column:y 4"></div>
<div style="grid-column:y 3"></div>
<div style="grid-column:y 2"></div>
<div style="grid-column:y 1"></div>
<div style="grid-column:y -1"></div>
<div style="grid-column:y -2"></div>
<div style="grid-column:y -3"></div>
<div style="grid-column:y -4"></div>
<div style="grid-column:y -5"></div>
</div></div>
<script>
const expectedResults = [
"subgrid [z] [z] [z] [z] [z]",
"subgrid [z] [z] [z] [z] [z]",
"subgrid [x] [y] [y] [y] [z]",
"subgrid [x] [z] [z] [z] [z]",
"subgrid [x] [x] [x] [x] [z]",
"subgrid [x] [x] [z] [z] [z]",
"subgrid [x] [y] [z] [z] []",
"subgrid [x] [y] [x] [y] [z]",
"subgrid [x] [y] [x] [y] []",
"subgrid [y] [y] [y] [z] [z]",
"subgrid [x] [y] [z] [z] []",
"subgrid [z] [x] [y] [z] []",
"subgrid [z] [x] [y] [x] [y]",
"subgrid [z] [z] [z] [z] [z]",
"subgrid [z] [x] [y] [z] []",
"subgrid [z] [x] [y] [z] [x]",
"subgrid [x] [y] [z] [x] []",
"subgrid [x] [y] [z] [y] [z]",
"subgrid [w] [y] [z] [y] [z] [x]",
"subgrid [w] [y] [z] [y] [z] [x] []",
];
[...document.querySelectorAll('.subgrid')].forEach(function(subgrid, i) {
let actual = window.getComputedStyle(subgrid)['grid-template-columns'];
let expected = expectedResults[i];
if (actual != expected) {
let err = "Unexpected getComputedStyle value for subgrid " + i + " with className '" + subgrid.className + "':" +
" Actual: \"" + actual + "\", Expected: \"" + expected + "\"";
document.body.appendChild(document.createTextNode(err));
document.body.appendChild(document.createElement("br"));
}
});
</script>
</body>

View file

@ -0,0 +1,45 @@
// Any copyright is dedicated to the Public Domain.
// https://creativecommons.org/publicdomain/zero/1.0/
const gridChildHelperRow = "row";
const gridChildHelperCol = "col";
// Helper for building testcases for grid-template-* with a child div in
// multiple positions. Prop is expected ot be one of gridChildHelperRow or
// gridChildHelperCol, to select testing grid rows or grid columns,
// respectively.
// The child div is found by the id of 'child'.
function GridChildHelper(prop, style){
this.child = document.getElementById("child");
this.style = style;
this.prop = prop;
}
// Runs a test for computed values on the property the helper object was
// constructed with. The childStyle is used for choosing the grid row/column
// of the child div.
// expected is passed as-is to the computed value test.
// The child style is appended to the test name in such a way that different
// tests for the same parent style but different child style values will have
// different test names.
GridChildHelper.prototype.runTest = function(childStyle, expected) {
'use strict';
const childProps = {
[gridChildHelperCol]:"gridColumn",
[gridChildHelperRow]:"gridRow"
};
const childProp = childProps[this.prop];
const parentProps = {
[gridChildHelperCol]:"grid-template-columns",
[gridChildHelperRow]:"grid-template-rows"
};
const parentProp = parentProps[this.prop];
const oldChildStyle = this.child[childProp];
this.child.style[childProp] = childStyle;
test_computed_value(parentProp, this.style, expected, childProp + " = " + childStyle);
this.child[childProp] = oldChildStyle;
}

View file

@ -0,0 +1,74 @@
<!DOCTYPE html>
<title>Test that non-transitioned style is responsive to transitioning properties</title>
<link rel="help" href="https://drafts.csswg.org/css-transitions/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
#target1 {
transition: font-size steps(2, start) 1000s;
font-size: 10px;
width: 1em;
}
#target1.change {
font-size: 20px;
}
#ref1 {
width: 15px;
}
#target2 {
transition: font-size steps(2, start) 1000s;
font-size: 10px;
width: 1ex;
}
#target2.change {
font-size: 20px;
}
#ref2 {
font-size: 15px;
width: 1ex;
}
#target3 {
transition: --x steps(2, start) 1000s;
--x: 10px;
width: var(--x);
}
#target3.change {
--x: 20px;
font-size: 20px;
}
#ref3 {
width: 20px;
}
</style>
<div id="targets">
<div id="target1"></div>
<div id="target2"></div>
<div id="target3"></div>
</div>
<div id="refs">
<div id="ref1"></div>
<div id="ref2"></div>
<div id="ref3"></div>
</div>
<script>
// Test that the computed value of the given property is equal on
// 'target' and 'ref', after applying the transition to 'target'.
function test_ref(target, ref, property, description) {
test(() => {
let unused = getComputedStyle(target).getPropertyValue(property);
target.className = 'change';
let actual = getComputedStyle(target).getPropertyValue(property);
let expected = getComputedStyle(ref).getPropertyValue(property);
assert_equals(actual, expected);
}, description);
}
test_ref(target1, ref1, 'width', 'em units respond to font-size transition');
test_ref(target2, ref2, 'width', 'ex units respond to font-size transition');
test_ref(target3, ref3, 'width', 'var() references respond to custom property transition');
</script>

View file

@ -0,0 +1,27 @@
<!DOCTYPE html>
<title>Test that rem units are responsive to transitioning font-size on root</title>
<link rel="help" href="https://drafts.csswg.org/css-transitions/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
:root {
font-size: 10px;
transition: font-size steps(2, start) 10s;
}
:root.change {
font-size: 20px;
}
#target1 {
width: 1rem;
}
</style>
<div id="target1"></div>
<output id=output></output>
<script>
test(() => {
let unused = getComputedStyle(document.documentElement).getPropertyValue('font-size');
document.documentElement.className = 'change';
assert_equals(getComputedStyle(target1).getPropertyValue('width'), '15px');
}, 'Transitioning font-size on root affects rem units');
</script>

View file

@ -0,0 +1,18 @@
<!doctype html>
<title>replace / replaceSync on non-constructed stylesheet</title>
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<link rel="help" href="https://wicg.github.io/construct-stylesheets/">
<script src = '/resources/testharness.js'></script>
<script src = '/resources/testharnessreport.js'></script>
<style>:root { background-color: lime }</style>
<script>
promise_test(async function(t) {
assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "precondition")
let sheet = document.styleSheets[0];
assert_throws_dom("NotAllowedError", () => sheet.replaceSync(":root { background-color: red }"), "replaceSync on non-constructed sheet should throw");
assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "old sheet should still apply after replace");
await promise_rejects_dom(t, "NotAllowedError", sheet.replace(":root { background-color: red }"), "replace on non-constructed sheet should return a rejected promise");
assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "old sheet should still apply after replace");
});
</script>

View file

@ -1,5 +1,6 @@
// META: script=/resources/WebIDLParser.js // META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js // META: script=/resources/idlharness.js
// META: timeout=long
'use strict'; 'use strict';

View file

@ -19,3 +19,7 @@ root. At the time when the test would otherwise have ended a `TestRendered`
event is emitted; test authors can use this event to perform modifications that event is emitted; test authors can use this event to perform modifications that
are guaranteed not to be batched with the initial paint. This matches the are guaranteed not to be batched with the initial paint. This matches the
behaviour of [reftests](reftests). behaviour of [reftests](reftests).
Note that crash tests **do not** need to include `testharness.js` or use any of
the [testharness API](testharness-api.md) (e.g. they do not need to declare a
`test(..)`).

View file

@ -1,4 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<meta name="timeout" content="long">
<body> <body>
<script src=/resources/testharness.js></script> <script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script> <script src=/resources/testharnessreport.js></script>

View file

@ -170,6 +170,13 @@ promise_test(async t => {
}); });
}, 'HTMLScriptElement fetches with a "script" Request.destination'); }, 'HTMLScriptElement fetches with a "script" Request.destination');
// audioworklet destination
//////////////////////
promise_test(async t => {
let audioContext = new frame.contentWindow.AudioContext();
await audioContext.audioWorklet.addModule("dummy?dest=audioworklet");
}, 'AudioWorklet module fetches with a "audioworklet" Request.destination');
// Style destination // Style destination
//////////////////// ////////////////////

View file

@ -0,0 +1,56 @@
<!doctype html>
<html>
<head>
<title>
Check COEP report are send for CacheStorage requests in DedicatedWorker
</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="/common/utils.js"></script>
<script src="/service-workers/service-worker/resources/test-helpers.sub.js">
</script>
<script src="./resources/cache-storage-reporting.js"> </script>
</head>
<script>
promise_test(async (t) => {
const worker_url = local(encode(worker_path));
const iframe_url =
local(encode(iframe_path + header_coep + header_report_to));
dedicated_worker_script = `
(async function() {
const w = new Worker('${worker_url}');
w.postMessage(\`${eval_script}\`);
})();
`;
const iframe = await makeIframe(t, iframe_url);
iframe.contentWindow.postMessage(dedicated_worker_script);
const report = await fetchReport();
assert_equals(report["body"]["blocked-url"], image_url.toString());
assert_equals(report["body"]["type"], "corp");
assert_equals(report["type"], "coep");
assert_equals(normalize(report["url"]), normalize(worker_url.toString()));
}, "COEP support on DedicatedWorker.")
promise_test(async (t) => {
const worker_url = local(encode(worker_path));
const iframe_url =
local(encode(iframe_path + header_coep_report_only + header_report_to));
dedicated_worker_script = `
(async function() {
const w = new Worker('${worker_url}');
w.postMessage(\`${eval_script}\`);
})();
`;
const iframe = await makeIframe(t, iframe_url);
iframe.contentWindow.postMessage(dedicated_worker_script);
const report = await fetchReport();
assert_equals(report["body"]["blocked-url"], image_url.toString());
assert_equals(report["body"]["type"], "corp");
assert_equals(report["type"], "coep");
assert_equals(normalize(report["url"]), normalize(worker_url.toString()));
}, "COEP-Report-Only support on DedicatedWorker.")
</script>
</html>

View file

@ -0,0 +1,42 @@
<!doctype html>
<html>
<head>
<title>
Check COEP report are send for CacheStorage requests in Document.
</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="/common/utils.js"></script>
<script src="/service-workers/service-worker/resources/test-helpers.sub.js">
</script>
<script src="./resources/cache-storage-reporting.js"></script>
</head>
<script>
promise_test(async (t) => {
const iframe_url =
local(encode(iframe_path + header_coep + header_report_to));
const iframe = await makeIframe(t, iframe_url);
iframe.contentWindow.postMessage(eval_script);
const report = await fetchReport();
assert_equals(report["body"]["blocked-url"], image_url.toString());
assert_equals(report["body"]["type"], "corp");
assert_equals(report["type"], "coep");
assert_equals(normalize(report["url"]), normalize(iframe_url.toString()));
}, "COEP support on document.")
promise_test(async (t) => {
const iframe_url =
local(encode(iframe_path + header_coep_report_only + header_report_to));
const iframe = await makeIframe(t, iframe_url);
iframe.contentWindow.postMessage(eval_script);
const report = await fetchReport();
assert_equals(report["body"]["blocked-url"], image_url.toString());
assert_equals(report["body"]["type"], "corp");
assert_equals(report["type"], "coep");
assert_equals(normalize(report["url"]), normalize(iframe_url.toString()));
}, "COEP-Report-Only support on document.")
</script>
</html>

View file

@ -0,0 +1,53 @@
<!doctype html>
<html>
<head>
<title>
Check COEP report are send for CacheStorage requests in ServiceWorker.
</title>
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="/common/utils.js"></script>
<script src="/service-workers/service-worker/resources/test-helpers.sub.js">
</script>
<script src="./resources/cache-storage-reporting.js"></script>
</head>
<script>
promise_test(async (t) => {
const worker_url = local(encode(
worker_path + header_coep + header_report_to + header_service_worker_allowed
));
const reg =
await service_worker_unregister_and_register(t, worker_url, SW_SCOPE);
add_completion_callback(() => reg.unregister());
const worker = reg.installing || reg.waiting || reg.active;
reports = fetchReport();
worker.postMessage(eval_script);
const report = await reports;
assert_equals(report["body"]["blocked-url"], image_url.toString());
assert_equals(report["body"]["type"], "corp");
assert_equals(report["type"], "coep");
assert_equals(normalize(report["url"]), normalize(worker_url.toString()));
}, "COEP support on ServiceWorker.")
promise_test(async (t) => {
const worker_url = local(encode(
worker_path + header_coep_report_only + header_report_to + header_service_worker_allowed
))
const reg =
await service_worker_unregister_and_register(t, worker_url, SW_SCOPE);
add_completion_callback(() => reg.unregister());
const worker = reg.installing || reg.waiting || reg.active;
reports = fetchReport();
worker.postMessage(eval_script);
const report = await reports;
assert_equals(report["body"]["blocked-url"], image_url.toString());
assert_equals(report["body"]["type"], "corp");
assert_equals(report["type"], "coep");
assert_equals(normalize(report["url"]), normalize(worker_url.toString()));
}, "COEP-Report-Only support on ServiceWorker.")
</script>
</html>

View file

@ -0,0 +1,43 @@
<!doctype html>
<html>
<head>
<title>
Check COEP report are send for CacheStorage requests in DedicatedWorker
</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="/common/utils.js"></script>
<script src="/service-workers/service-worker/resources/test-helpers.sub.js">
</script>
<script src="./resources/cache-storage-reporting.js"> </script>
</head>
<script>
promise_test(async (t) => {
const worker_url =
local(encode(worker_path + header_coep + header_report_to));
const worker = new Worker(worker_url);
worker.postMessage(eval_script);
const report = await fetchReport();
assert_equals(report["body"]["blocked-url"], image_url.toString());
assert_equals(report["body"]["type"], "corp");
assert_equals(report["type"], "coep");
assert_equals(normalize(report["url"]), normalize(worker_url.toString()));
}, "COEP support on SharedWorker.")
promise_test(async (t) => {
const worker_url =
local(encode(worker_path + header_coep_report_only + header_report_to));
const worker = new Worker(worker_url);
worker.postMessage(eval_script);
const report = await fetchReport();
assert_equals(report["body"]["blocked-url"], image_url.toString());
assert_equals(report["body"]["type"], "corp");
assert_equals(report["type"], "coep");
assert_equals(normalize(report["url"]), normalize(worker_url.toString()));
}, "COEP-Report-Only support on SharedWorker.")
</script>
</html>

View file

@ -1,237 +0,0 @@
<!doctype html>
<html>
<head>
<title> Check COEP report are send for CacheStorage requests</title>
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="/common/utils.js"></script>
<script src="/service-workers/service-worker/resources/test-helpers.sub.js">
</script>
</head>
<script>
function remote(path) {
const REMOTE_ORIGIN = get_host_info().HTTPS_REMOTE_ORIGIN;
return new URL(path, REMOTE_ORIGIN);
}
function local(path) {
return new URL(path, location.origin);
}
let encode = function(url) {
return encodeURI(url).replace(/\;/g,"%3B");
}
const resource_path = (new URL("./resources", location)).pathname;
const report_token= token();
const report_endpoint_url = local(resource_path + `/report.py?key=${report_token}`)
const endpoint =
{
"group":"endpoint",
"max_age":3600,
"endpoints":[{ "url":report_endpoint_url.toString() }]
};
let endpoint_string =
JSON.stringify(endpoint)
.replace(/,/g, "\\,")
.replace(/\(/g, "\\\(")
.replace(/\)/g, "\\\)=");
const header_report_to = `|header(report-to,${endpoint_string})`;
const header_coep =
'|header(Cross-Origin-Embedder-Policy,require-corp;report-to="endpoint")';
const header_coep_report_only =
'|header(Cross-Origin-Embedder-Policy-Report-Only,require-corp;report-to="endpoint")';
const SW_SCOPE = local(resource_path + "/");
const header_service_worker_allowed =
`|header(service-worker-allowed,${SW_SCOPE})`;
const iframe_path = resource_path + "/iframe.html?pipe=";
const worker_path = resource_path + "/universal-worker.js?pipe=";
const image_url = remote("/images/blue.png");
// This script attempt to load a COEP:require-corp CORP:undefined response from
// the CacheStorage.
//
// Executed from different context:
// - A Document
// - A ServiceWorker
// - A DedicatedWorker
// - A SharedWorker
//
// The context has either COEP or COEP-Report-Only defined.
const eval_script = `
(async function() {
try {
const cache = await caches.open('v1');
const request = new Request('${image_url}', { mode: 'no-cors' });
const response = await cache.match(request);
} catch(e) {
}
})()
`;
promise_setup(async (t) => {
const cache = await caches.open('v1');
const fetch_request = new Request(image_url, {mode: 'no-cors'});
const fetch_response = await fetch(fetch_request);
await cache.put(fetch_request, fetch_response);
}, "Setup: store a CORS:cross-origin COEP:none response into CacheStorage")
async function makeIframe(test, iframe_url) {
const iframe = document.createElement("iframe");
test.add_cleanup(() => iframe.remove());
iframe.src = iframe_url;
const iframe_loaded = new Promise(resolve => iframe.onload = resolve);
document.body.appendChild(iframe);
await iframe_loaded;
return iframe;
}
function wait(ms) {
return new Promise(resolve => step_timeout(resolve, ms));
}
async function fetchReport() {
const fetch_report_path = resource_path + `/report.py?key=${report_token}`;
for(let i = 0; i<20; ++i) {
const response = await fetch(encode(fetch_report_path));
const reports = await response.json();
if (reports.length == 0) {
wait(200);
continue;
}
if (reports.length != 1)
throw "Too many reports received";
return reports[0];
}
throw "Report not send";
}
// Remove parts of the URL that are differ at runtime.
function normalize(url) {
url = new URL(url);
return url.origin + url.pathname;
}
promise_test(async (t) => {
const iframe_url =
local(encode(iframe_path + header_coep + header_report_to));
const iframe = await makeIframe(t, iframe_url);
iframe.contentWindow.postMessage(eval_script);
const report = await fetchReport();
assert_equals(report["body"]["blocked-url"], image_url.toString());
assert_equals(report["body"]["type"], "corp");
assert_equals(report["type"], "coep");
assert_equals(normalize(report["url"]), normalize(iframe_url.toString()));
}, "COEP support on document.")
promise_test(async (t) => {
const iframe_url =
local(encode(iframe_path + header_coep_report_only + header_report_to));
const iframe = await makeIframe(t, iframe_url);
iframe.contentWindow.postMessage(eval_script);
const report = await fetchReport();
assert_equals(report["body"]["blocked-url"], image_url.toString());
assert_equals(report["body"]["type"], "corp");
assert_equals(report["type"], "coep");
assert_equals(normalize(report["url"]), normalize(iframe_url.toString()));
}, "COEP-Report-Only support on document.")
promise_test(async (t) => {
const worker_url = local(encode(worker_path));
const iframe_url =
local(encode(iframe_path + header_coep + header_report_to));
dedicated_worker_script = `
(async function() {
const w = new Worker('${worker_url}');
w.postMessage(\`${eval_script}\`);
})();
`;
const iframe = await makeIframe(t, iframe_url);
iframe.contentWindow.postMessage(dedicated_worker_script);
const report = await fetchReport();
assert_equals(report["body"]["blocked-url"], image_url.toString());
assert_equals(report["body"]["type"], "corp");
assert_equals(report["type"], "coep");
assert_equals(normalize(report["url"]), normalize(worker_url.toString()));
}, "COEP support on DedicatedWorker.")
promise_test(async (t) => {
const worker_url = local(encode(worker_path));
const iframe_url =
local(encode(iframe_path + header_coep_report_only + header_report_to));
dedicated_worker_script = `
(async function() {
const w = new Worker('${worker_url}');
w.postMessage(\`${eval_script}\`);
})();
`;
const iframe = await makeIframe(t, iframe_url);
iframe.contentWindow.postMessage(dedicated_worker_script);
const report = await fetchReport();
assert_equals(report["body"]["blocked-url"], image_url.toString());
assert_equals(report["body"]["type"], "corp");
assert_equals(report["type"], "coep");
assert_equals(normalize(report["url"]), normalize(worker_url.toString()));
}, "COEP-Report-Only support on DedicatedWorker.")
promise_test(async (t) => {
const worker_url =
local(encode(worker_path + header_coep + header_report_to));
const worker = new Worker(worker_url);
worker.postMessage(eval_script);
const report = await fetchReport();
assert_equals(report["body"]["blocked-url"], image_url.toString());
assert_equals(report["body"]["type"], "corp");
assert_equals(report["type"], "coep");
assert_equals(normalize(report["url"]), normalize(worker_url.toString()));
}, "COEP support on SharedWorker.")
promise_test(async (t) => {
const worker_url =
local(encode(worker_path + header_coep_report_only + header_report_to));
const worker = new Worker(worker_url);
worker.postMessage(eval_script);
const report = await fetchReport();
assert_equals(report["body"]["blocked-url"], image_url.toString());
assert_equals(report["body"]["type"], "corp");
assert_equals(report["type"], "coep");
assert_equals(normalize(report["url"]), normalize(worker_url.toString()));
}, "COEP-Report-Only support on SharedWorker.")
promise_test(async (t) => {
const worker_url =
local(encode(worker_path + header_coep + header_service_worker_allowed));
const reg =
await service_worker_unregister_and_register(t, worker_url, SW_SCOPE);
add_completion_callback(() => reg.unregister());
const worker = reg.installing || reg.waiting || reg.active;
worker.postMessage(eval_script);
const report = await fetchReport();
assert_equals(report["body"]["blocked-url"], image_url.toString());
assert_equals(report["body"]["type"], "corp");
assert_equals(report["type"], "coep");
assert_equals(normalize(report["url"]), normalize(worker_url.toString()));
}, "COEP support on ServiceWorker.")
promise_test(async (t) => {
const worker_url =
local(encode(worker_path + header_coep_report_only + header_service_worker_allowed))
const reg =
await service_worker_unregister_and_register(t, worker_url, SW_SCOPE);
add_completion_callback(() => reg.unregister());
const worker = reg.installing || reg.waiting || reg.active;
worker.postMessage(eval_script);
const report = await fetchReport();
assert_equals(report["body"]["blocked-url"], image_url.toString());
assert_equals(report["body"]["type"], "corp");
assert_equals(report["type"], "coep");
assert_equals(normalize(report["url"]), normalize(worker_url.toString()));
}, "COEP-Report-Only support on ServiceWorker.")
</script>
</html>

View file

@ -0,0 +1,104 @@
function remote(path) {
const REMOTE_ORIGIN = get_host_info().HTTPS_REMOTE_ORIGIN;
return new URL(path, REMOTE_ORIGIN);
}
function local(path) {
return new URL(path, location.origin);
}
let encode = function(url) {
return encodeURI(url).replace(/\;/g,"%3B");
}
const resource_path = (new URL("./resources", location)).pathname;
const report_token= token();
const report_endpoint_url = local(resource_path + `/report.py?key=${report_token}`)
const endpoint =
{
"group":"endpoint",
"max_age":3600,
"endpoints":[{ "url":report_endpoint_url.toString() }]
};
let endpoint_string =
JSON.stringify(endpoint)
.replace(/,/g, "\\,")
.replace(/\(/g, "\\\(")
.replace(/\)/g, "\\\)=");
const header_report_to = `|header(report-to,${endpoint_string})`;
const header_coep =
'|header(Cross-Origin-Embedder-Policy,require-corp;report-to="endpoint")';
const header_coep_report_only =
'|header(Cross-Origin-Embedder-Policy-Report-Only,require-corp;report-to="endpoint")';
const SW_SCOPE = local(resource_path + "/");
const header_service_worker_allowed =
`|header(service-worker-allowed,${SW_SCOPE})`;
const iframe_path = resource_path + "/iframe.html?pipe=";
const worker_path = resource_path + "/universal-worker.js?pipe=";
const image_url = remote("/images/blue.png");
// This script attempt to load a COEP:require-corp CORP:undefined response from
// the CacheStorage.
//
// Executed from different context:
// - A Document
// - A ServiceWorker
// - A DedicatedWorker
// - A SharedWorker
//
// The context has either COEP or COEP-Report-Only defined.
const eval_script = `
(async function() {
try {
const cache = await caches.open('v1');
const request = new Request('${image_url}', { mode: 'no-cors' });
const response = await cache.match(request);
} catch(e) {
}
})()
`;
promise_setup(async (t) => {
const cache = await caches.open('v1');
const fetch_request = new Request(image_url, {mode: 'no-cors'});
const fetch_response = await fetch(fetch_request);
await cache.put(fetch_request, fetch_response);
}, "Setup: store a CORS:cross-origin COEP:none response into CacheStorage")
async function makeIframe(test, iframe_url) {
const iframe = document.createElement("iframe");
test.add_cleanup(() => iframe.remove());
iframe.src = iframe_url;
const iframe_loaded = new Promise(resolve => iframe.onload = resolve);
document.body.appendChild(iframe);
await iframe_loaded;
return iframe;
}
function wait(ms) {
return new Promise(resolve => step_timeout(resolve, ms));
}
async function fetchReport() {
const fetch_report_path = resource_path + `/report.py?key=${report_token}`;
while(true) {
const response = await fetch(encode(fetch_report_path));
const reports = await response.json();
if (reports.length == 0) {
wait(200);
continue;
}
if (reports.length != 1)
throw "Too many reports received";
return reports[0];
}
throw "Report not send";
}
// Remove parts of the URL that are different at runtime.
function normalize(url) {
url = new URL(url);
return url.origin + url.pathname;
}

View file

@ -1,8 +1,9 @@
// This creates a serialized <script> element that is useful for blob/data/srcdoc-style tests. // This creates a serialized <script> element that is useful for blob/data/srcdoc-style tests.
function createScript(sameOrigin, crossOrigin, parent="parent", id="") { function createScript(sameOrigin, crossOrigin, type="parent", id="") {
return `<script> return `<script>
const data = { id: "${id}", const data = { id: "${id}",
opener: !!window.opener,
origin: window.origin, origin: window.origin,
sameOriginNoCORPSuccess: false, sameOriginNoCORPSuccess: false,
crossOriginNoCORPFailure: false }; crossOriginNoCORPFailure: false };
@ -18,6 +19,14 @@ if ("${sameOrigin}" !== "null") {
records.push(record(fetch("${sameOrigin}/common/blank.html", { mode: "no-cors" }), "sameOriginNoCORPSuccess", true)); records.push(record(fetch("${sameOrigin}/common/blank.html", { mode: "no-cors" }), "sameOriginNoCORPSuccess", true));
} }
Promise.all(records).then(() => window.${parent}.postMessage(data, "*")); Promise.all(records).then(() => {
// Using BroadcastChannel is useful for blob: URLs, which are always same-origin
if ("${type}" === "channel") {
const bc = new BroadcastChannel("${id}");
bc.postMessage(data);
} else {
window.${type}.postMessage(data, "*");
}
});
<\/script>`; <\/script>`;
} }

View file

@ -9,8 +9,9 @@
promise_test(t => { promise_test(t => {
const origins = get_host_info(); const origins = get_host_info();
const id = `tut mir leid ${type}`; const id = `tut mir leid ${type}`;
const blob = new Blob([createScript(origins.ORIGIN, origins.HTTPS_REMOTE_ORIGIN, "opener", id)], {type: "text/html"}); const blob = new Blob([createScript(origins.ORIGIN, origins.HTTPS_REMOTE_ORIGIN, "channel", id)], {type: "text/html"});
const blobURL = URL.createObjectURL(blob); const blobURL = URL.createObjectURL(blob);
const bc = new BroadcastChannel(id);
if (type === "window.open()") { if (type === "window.open()") {
const popup = window.open(blobURL); const popup = window.open(blobURL);
@ -32,13 +33,18 @@
} }
return new Promise(resolve => { return new Promise(resolve => {
window.addEventListener("message", t.step_func(({ data }) => { bc.onmessage = t.step_func(({ data }) => {
assert_equals(data.id, id); assert_equals(data.id, id);
assert_equals(data.origin, window.origin); assert_equals(data.origin, window.origin);
assert_true(data.sameOriginNoCORPSuccess, "Same-origin without CORP did not succeed"); assert_true(data.sameOriginNoCORPSuccess, "Same-origin without CORP did not succeed");
assert_true(data.crossOriginNoCORPFailure, "Cross-origin without CORP did not fail"); assert_true(data.crossOriginNoCORPFailure, "Cross-origin without CORP did not fail");
if (type === "<a rel=noopener>") {
assert_false(data.opener);
} else {
assert_true(data.opener);
}
resolve(); resolve();
})); });
}); });
}, `COOP+COEP blob URL popup: ${type}`); }, `COOP+COEP blob URL popup: ${type}`);
}); });

View file

@ -0,0 +1,22 @@
<!DOCTYPE html>
<style>
* {
margin: 0;
}
</style>
<html class="reftest-wait" style="overflow: hidden">
<head>
<title>Images with loading='lazy' load under subpixel-offset clips</title>
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
<link rel="help" href="https://html.spec.whatwg.org/#lazy-loading-attributes">
</head>
<div style="height: 3.7499995rem; "></div>
<div style="position: relative; font-size: 0; background: lightblue">
<img id=target loading="lazy" data-sizes="auto" src="resources/image.png"
title="" width="1600">
</div>
</html>
<script src="/common/reftest-wait.js"></script>
<script>
target.onload = takeScreenshot;
</script>

View file

@ -0,0 +1,25 @@
<!DOCTYPE html>
<style>
* {
margin: 0;
}
</style>
<html class="reftest-wait" style="overflow: hidden">
<head>
<title>Images with loading='lazy' load under subpixel-offset clips</title>
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
<link rel="help" href="https://html.spec.whatwg.org/#lazy-loading-attributes">
<link rel="match" href="image-loading-subpixel-clip-ref.html">
</head>
<div style="height: 3.7499995rem"></div>
<div style="overflow: hidden">
<div style="position: relative; font-size: 0; background: lightblue">
<img id=target loading="lazy" data-sizes="auto" src="resources/image.png"
title="" width="1600">
</div>
</div>
</html>
<script src="/common/reftest-wait.js"></script>
<script>
target.onload = takeScreenshot;
</script>

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