swh:1:snp:b37d435721bbd450624165f334724e3585346499
Revision b5b3c1f0c2c224e863e50ad3f78ed5af0d73981e authored by Morten Stenshorne on 13 March 2018, 11:29:55 UTC, committed by Blink WPT Bot on 13 March 2018, 11:37:14 UTC
If clear is specified on an element whose first piece of content is
inside a child (so that the element's BFC offset cannot be determined at
the beginning of layout), we need this child to know about the clearance
offset on the parent, or it will not be pushed below adjacent floats as
it should. Just pushing the parent, but leaving the children unaffected
by clearance won't do. We need this in order to be able to lay out in a
single pass (and apply clearance when we detect it, rather than doing
it on the element with 'clear' and relayout the children if something
moved).

Since a constraint space's clearance offset is now "inherited" down the
tree, as long as we're within the same block formatting context, we now
also need to propagate the "is pushed by floats" flag upwards, or we
won't detect class C break points correctly. Without this the unit test
ClassCBreakPointBeforeBlockMarginCollapsing in
NGColumnLayoutAlgorithmTest would regress, because it would incorrectly
detect a class C break point before the break-inside:avoid block.
We must make sure that class C break points are only detected on the
outermost block that got pushed by floats, because it's there that
we'll get the gap between the inner edge of the container and the outer
edge of the child.

Added some tests. One of them fails in legacy (but not in NG). One of
the tests, clear-on-child-with-margins.html, passes both with and
without this code change, but I started to wonder if we'd suddenly
could end up pulling the parent of the box with 'clear' downwards, so
thought I better add it, to make sure we don't regress in this regard.

The test NoClassCBreakPointBeforeBfc in
NGColumnLayoutAlgorithmTest no longer needs its workaround,
because the display:flow-root child of #container now sets its
position correctly (past the float) right away.

Acid2 also looks slightly better now!

Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_layout_ng
Change-Id: I732b19398bd43b9874f6bb8c57ce435d1c510754
Reviewed-on: https://chromium-review.googlesource.com/957045
Commit-Queue: Morten Stenshorne <mstensho@chromium.org>
Reviewed-by: Emil A Eklund <eae@chromium.org>
Reviewed-by: Ian Kilpatrick <ikilpatrick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#542769}
1 parent c7a4bd8
History
Tip revision: 259d0612af038d14f2cd889a14a3adb6c9e96d96 authored by Josh Matthews on 23 December 2018, 05:25:51 UTC
Claim to support testdriver in servodriver
Tip revision: 259d061
File Mode Size
.well-known
2dcontext
FileAPI
IndexedDB
WebCryptoAPI
WebIDL
accelerometer
accname
acid
ambient-light
annotation-model
annotation-protocol
annotation-vocab
apng
audio-output
background-fetch
battery-status
beacon
bluetooth
clear-site-data
client-hints
clipboard-apis
common
compat
conformance-checkers
console
content-security-policy
cookie-store
cookies
core-aam
cors
credential-management
css
custom-elements
device-memory
docs
dom
domparsing
domxpath
dpub-aam
dpub-aria
editing
encoding
encrypted-media
entries-api
eventsource
feature-policy
fetch
fonts
fullscreen
gamepad
geolocation-API
geolocation-sensor
graphics-aam
gyroscope
hr-time
html
html-imports
html-longdesc
html-media-capture
http
imagebitmap-renderingcontext
images
infrastructure
innerText
input-events
interfaces
intersection-observer
js
keyboard-lock
longtask-timing
magnetometer
mathml
media
media-capabilities
media-source
mediacapture-fromelement
mediacapture-image
mediacapture-record
mediacapture-streams
mediasession
mimesniff
mixed-content
navigation-timing
netinfo
notifications
offscreen-canvas
old-tests
orientation-event
orientation-sensor
page-visibility
paint-timing
payment-handler
payment-method-basic-card
payment-method-id
payment-request
performance-timeline
picture-in-picture
pointerevents
pointerlock
preload
presentation-api
proximity
quirks
referrer-policy
remote-playback
requestidlecallback
resize-observer
resource-timing
resources
screen-orientation
secure-contexts
selection
sensors
server-timing
service-workers
shadow-dom
speech-api
staticrange
storage
streams
subresource-integrity
svg
svg-aam
tools
touch-events
trusted-types
uievents
upgrade-insecure-requests
url
user-timing
vibration
visual-viewport
wai-aria
wake-lock
wasm
web-animations
web-nfc
web-share
webaudio
webauthn
webdriver
webgl
webmessaging
webrtc
websockets
webstorage
webusb
webvr
webvtt
webxr
workers
worklets
x-frame-options
xhr
.codecov.yml -rw-r--r-- 66 bytes
.gitignore -rw-r--r-- 260 bytes
.gitmodules -rw-r--r-- 519 bytes
.pyup.yml -rw-r--r-- 1.0 KB
.travis.yml -rw-r--r-- 3.7 KB
CONTRIBUTING.md -rw-r--r-- 1.6 KB
LICENSE.md -rw-r--r-- 5.1 KB
README.md -rw-r--r-- 15.2 KB
check_stability.ini -rw-r--r-- 524 bytes
config.default.json -rw-r--r-- 756 bytes
lint.whitelist -rw-r--r-- 54.9 KB
serve.py -rw-r--r-- 263 bytes
server-side.md -rw-r--r-- 8.1 KB
testharness_runner.html -rw-r--r-- 95 bytes
update-built-tests.sh -rwxr-xr-x 208 bytes
wpt -rwxr-xr-x 95 bytes
wpt.py -rw-r--r-- 15 bytes

README.md

back to top