commit | 3f1830341fa1459c67e4c5d5c9a90c97b0ca498c | [log] [tgz] |
---|---|---|
author | Morten Stenshorne <mstensho@chromium.org> | Wed Sep 20 22:49:04 2023 |
committer | Blink WPT Bot <blink-w3c-test-autoroller@chromium.org> | Wed Sep 20 23:08:05 2023 |
tree | 55d31dd51a1ade15f845398d883f70d3ffd5d9d8 | |
parent | be778b527a2e58a44aec319d6e5ffad1b02d1876 [diff] |
Correct fragmentation of floats inside inlines. If layout decided to fragment a float, or break before it, and this float was inside an inline formatting context, it would "escape" the inline formatting context for subsequent fragments, and be laid out as a direct float child of the containing block. This would cause paint and hit testing issues, because the actual inline ancestors of the float would have no effect on the float, so that e.g. a SPAN with relative positioning or opacity would only affect the first fragment of the float. Furthermore, the fact that we were not keeping the float inside the inline formatting context could also result in a non-contiguous FragmentData range for a LayoutInline, and, if this LayoutInline established a PaintLayer, we would get confused and fail to paint / hit-test anything in a after a tall float. We already had code to propagate float breaks to the containing block layout algorithm. The fix is to wrap the break tokens of such floats inside an inline break token, and resume such inline break tokens as parallel fragmentation flows. We had code in PrePaint as an attempt to cope with escaping float fragments, to some extent, which is no longer required, so I removed it. It should be noted that this did by no means work in all situations. If a float was a child of a PaintLayer-establishing LayoutInline, PrePaint would get confused as to which PaintLayer was the containing layer of the float. More cleanup is possible after this. For now, added a note to NGBoxFragmentPainter::PaintFloatingChildren(). We should now be able to assume non-contiguous ranges of physical fragments that have fragment items. Previously, a tall and fragmented float could prevent some of the containing physical fragments from getting items. Update two unit tests. DumpFragmentTree() unfortunately doesn't dump the contents of a line box, so now that resumed floats also end up inside lines, they aren't dumped. This was already the case for the first fragment of any float in an inline formatting context, but now it also happens to subsequent fragments. Bug: 1113185, 1327322 Change-Id: Ie81791892d68ffccd0aec92ee6439de4b03326dd Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4874801 Reviewed-by: Koji Ishii <kojii@chromium.org> Commit-Queue: Morten Stenshorne <mstensho@chromium.org> Reviewed-by: Ian Kilpatrick <ikilpatrick@chromium.org> Cr-Commit-Position: refs/heads/main@{#1199277}
The web-platform-tests Project is a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.
The most important sources of information and activity are:
wpt:matrix.org
matrix channel; includes participants located around the world, but busiest during the European working day.If you'd like clarification about anything, don't hesitate to ask in the chat room or on the mailing list.
Clone or otherwise get https://github.com/web-platform-tests/wpt.
Note: because of the frequent creation and deletion of branches in this repo, it is recommended to “prune” stale branches when fetching updates, i.e. use git pull --prune
(or git fetch -p && git merge
).
See the documentation website and in particular the system setup for running tests locally.
The wpt
command provides a frontend to a variety of tools for working with and running web-platform-tests. Some of the most useful commands are:
wpt serve
- For starting the wpt http serverwpt run
- For running tests in a browserwpt lint
- For running the lint against all testswpt manifest
- For updating or generating a MANIFEST.json
test manifestwpt install
- For installing the latest release of a browser or webdriver server on the local machine.wpt serve-wave
- For starting the wpt http server and the WAVE test runner. For more details on how to use the WAVE test runner see the documentation.On Windows wpt
commands must be prefixed with python
or the path to the python binary (if python
is not in your %PATH%
).
python wpt [command]
Alternatively, you may also use Bash on Ubuntu on Windows in the Windows 10 Anniversary Update build, then access your windows partition from there to launch wpt
commands.
Please make sure git and your text editor do not automatically convert line endings, as it will cause lint errors. For git, please set git config core.autocrlf false
in your working tree.
The master branch is automatically synced to wpt.live and w3c-test.org.
Save the Web, Write Some Tests!
Absolutely everyone is welcome to contribute to test development. No test is too small or too simple, especially if it corresponds to something for which you've noted an interoperability bug in a browser.
The way to contribute is just as usual:
git checkout -b topic
../wpt lint
as described above.If you spot an issue with a test and are not comfortable providing a pull request per above to fix it, please file a new issue. Thank you!