layout: Make overflow calculation take relative percentages into account.
This necessitated changing overflow to be calculated by the parent flow
if relatively positioned children are present. That is because the
overflow regions cannot be calculated without knowing relative offsets,
which themselves cannot be calculated without knowing the parent size
(because of percentages). To accomplish this without sacrificing
parallelism in the non-relative case, this patch splits overflow into
"early" and "late" computation. Late overflow computation cannot be
parallelized across children, while early overflow computation can.
Makes the "Apple Music" text show up over the full-bleed promotional
background on apple.com.
r? @SimonSapin -- would appreciate a look over the iframe test case that was changed.
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7313)
<!-- Reviewable:end -->
This change adds support for calculating the correct angle in the border
corner arc when switching from one border to another e.g. the left border
to the top border.
When the border-top/right/bottom/left-widths are not the same, the angle on
the border corner arc separating the borders isn't pi/4.
For example, if the top border width is much larger than the left border
width then most of the border corner should be drawn using the top
border color.
Elliptical border radii are supported for when elliptical border radii are
added.
The common case where borders have the same width sets the angle to
pi/4 directly.
A ref test is also included.
Snapping the top-left and bottom-right corners separately can cause a
rectangle to change size when offset by a subpixel amount. Instead, this
patch snaps the top-left corner, then rounds the size to a whole pixel amount,
so any rectangle of a given size will always have the same snapped size.
Fixes#7152.
Known issues:
* Collapsed borders do not correctly affect the border-box of the table
itself.
* The content widths of all cells in a column and the content height of
all cells in a row is the same in this patch, but not in Gecko and
WebKit.
* Corners are not painted well. The spec does not say what to do here.
* Column spans are not handled well. The spec does not say what to do
here either.
`background-size` per CSS-BACKGROUNDS § 3.9.
Nearest neighbor interpolation is used for `crisp-edges`, like Firefox.
A note has been added that we could do better if we wanted to.
Multiple backgrounds are not yet supported.
This will also update the rust-azure dependency
to point to the hash where we have a single Color type.
Just executed ref-tests and no regressions found.