Commit graph

137 commits

Author SHA1 Message Date
Patrick Walton
777c46fd3f Expand the block size of the root flow's margin box to the viewport size
instead of expanding the block size of its border box.

Closes #9308.
2016-01-28 11:12:37 -08:00
Patrick Walton
9c7b9fa32d layout: Remove some bogus code that tried to handle
absolutely-positioned flows separately when storing overflow.

This code dates back to the time when absolutely positioned flows were
ignored by all of their ancestors up to the containing block. This
hasn't been true for at least a year.

Closes #9306.
Closes #9309.
Is a partial fix for #9308.
2016-01-25 10:52:07 -08:00
Simon Sapin
b4f68020ac Disable tests that fail unless non-free Microsoft fonts are installed.
This is a bug, font fallback should be more flexible than this.

https://github.com/servo/servo/issues/7625
2016-01-10 10:29:09 +01:00
Glenn Watson
b670430cb2 Add test to constellation to avoid writing reftest image if there are pending frames.
Also change when pipelines become active.

This makes the constellation activate a pipeline as the current frame
when it is ready to do initial reflow, rather than when it is ready
to paint.

This fixes a number of intermittent failures that could previously occur
if an iframe was not visible - which would mean it was never moved from
a pending frame in the constellation to an active frame.

(It happens that webrender exposes these intermittents as permanent failures).
2015-12-17 12:30:19 +10:00
Keith Yeung
7ce88db5ca Update CSS tests to revision 1399540ef50bff32151a5058da8910483538f382 2015-12-10 17:04:52 -08:00
Ms2ger
35c74aecc2 Update CSS tests to revision 0698c2aa9ead844b6d7d10eafb096cb1118e13ef 2015-12-10 10:03:03 -05:00
Ms2ger
473b12683d Enable background-root-102 and background-root-103. 2015-11-24 15:34:54 +01:00
Ms2ger
53608a60a4 Update CSS tests to revision c68e4df16362489debde94340cc6f54945a72f2f 2015-11-17 10:54:09 +01:00
Bobby Holley
5d859568cf Update test expectations. 2015-11-10 11:57:27 -08:00
bors-servo
7ff3a17524 Auto merge of #8039 - tschneidereit:script-owns-stylesheets, r=jdm
Move Stylesheet loading and ownership from the layout task into HTML elements

Stylesheets for `HTMLLinkElement`s are now loaded by the resource task, triggered by the element in question. Stylesheets are owned by the elements they're associated with, which can be `HTMLStyleElement`, `HTMLLinkElement`, and `HTMLMetaElement` (for `<meta name="viewport">).

Additionally, the quirks mode stylesheet (just as the user and user agent stylesheets a couple of commits ago), is implemented as a lazy static, loaded once per process and shared between all documents.

This all has various nice consequences:
 - Stylesheet loading becomes a non-blocking operation.
 - Stylesheets are removed when the element they're associated with is removed from the document.
 - It'll be possible to implement the CSSOM APIs that require direct access to the stylesheets (i.e., ~ all of them).
 - Various subtle correctness issues are fixed.

One piece of interesting follow-up work would be to move parsing of external stylesheets to the resource task, too. Right now, it happens in the link element once loading is complete, so blocks the script task. Moving it to the resource task would probably be fairly straight-forward as it doesn't require access to any external state.

Depends on #7979 because without that loading stylesheets asynchronously breaks lots of content.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8039)
<!-- Reviewable:end -->
2015-11-08 01:11:54 +05:30
Till Schneidereit
543703e3d8 Move Stylesheet loading and ownership from the layout task into HTML elements
Stylesheets for `HTMLLinkElement`s are now loaded by the resource task, triggered by the element in question. Stylesheets are owned by the elements they're associated with, which can be `HTMLStyleElement`, `HTMLLinkElement`, and `HTMLMetaElement` (for `<meta name="viewport">).

Additionally, the quirks mode stylesheet (just as the user and user agent stylesheets a couple of commits ago), is implemented as a lazy static, loaded once per process and shared between all documents.

This all has various nice consequences:
 - Stylesheet loading becomes a non-blocking operation.
 - Stylesheets are removed when the element they're associated with is removed from the document.
 - It'll be possible to implement the CSSOM APIs that require direct access to the stylesheets (i.e., ~ all of them).
 - Various subtle correctness issues are fixed.

One piece of interesting follow-up work would be to move parsing of external stylesheets to the resource task, too. Right now, it happens in the link element once loading is complete, so blocks the script task. Moving it to the resource task would probably be fairly straight-forward as it doesn't require access to any external state.
2015-11-07 18:11:29 +01:00
Alan Jeffrey
558b0b6c29 Updated test expectations.
The WPT CSS tests block-in-inline-remove-000.htm and block-in-inline-remove-002.htm.ini now pass.
2015-11-04 10:14:49 -06:00
Simon Sapin
80dbd29528 counter-reset defaults to 0, not 1. 2015-11-04 10:55:16 +01:00
Martin Robinson
c1a38e240a Mix stacking contexts into the positioned content list
Sometimes positioned content needs to be layered on top of stacking
contexts. The layer synthesis code can do this, but the current design
prevents it because stacking contexts are stored in a separate struct
member. In order to preserve tree order, mix stacking contexts into the
positioned content list, by adding a new StackingContextClass
DisplayItem. Such items do not have a base DisplayItem.

In some ways this simplifies the code, because we no longer have to
have a separate code path in the StackingContextLayerCreator.

Fixes #7779.
Fixes #7983.
Fixes #8122.
Fixes #8310.
2015-11-03 17:47:39 -08:00
Ms2ger
5450053b02 Update CSS tests to revision d13905941293af83ea8c3c1750dba652e0423fb0 2015-10-31 16:21:47 +01:00
Ms2ger
6a4ad433a2 Update CSS tests to revision 465c03e3d8d42ce98b9dfa0c8d8e7b4b8d48ebd7 2015-10-22 10:19:14 +02:00
Ms2ger
f8b7a86ce4 Update cssparser. 2015-10-13 17:07:08 +02:00
Ms2ger
af637640ae Update CSS tests to revision 8cf31317e387a3bc22febb39ca3df8180a54b13e 2015-10-12 17:53:47 +02:00
Ms2ger
145aea3eeb Update CSS tests to revision 7a87ef71fc579e52d3438e009107aa442bc4021b 2015-10-06 17:04:25 +02:00
Michael Howell
bb5234767d Create a pseudo-stacking context for positioned floats.
Fixes #7828
2015-10-05 11:27:32 -07:00
bors-servo
fb6d0946cb Auto merge of #7794 - mbrubeck:setdata, r=pcwalton
Dirty text nodes when their content changes

Fixes #7793. r? @pcwalton

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7794)
<!-- Reviewable:end -->
2015-09-30 11:49:52 -06:00
Matt Brubeck
7e199f9bda Dirty text nodes when their content changes
Fixes #7793.
2015-09-29 16:40:46 -07:00
Matt Brubeck
062493fac6 Upgrade to the new harfbuzz-sys crate 2015-09-29 14:34:48 -07:00
Matt Brubeck
5667dfe7b0 Update unicode-bidi to 0.2.2
Fixes #7701 via servo/unicode-bidi#17.
2015-09-25 13:01:53 -07:00
Ms2ger
0ad6e78b23 Update CSS tests to revision 939546644b4d333218fd9c2c0f68c60752ff1e95 2015-09-25 12:54:36 +02:00
Ms2ger
bff545d198 Update CSS tests to revision 135b269a1d9f5ce7862ab7426578bd56e2add740 2015-09-19 18:02:54 +02:00
Bryan Bell
1f44686415 position-relative-035 reftest -> expected fail
There is no easy way to pass position-relative-035 & also
pass both tests/ref/border_rounding_1px_invisible_issue_7184 and
tests/ref/text_decoration_underline_subpx.

https://github.com/servo/servo/pull/7161, "Snap rectangles to nearest
pixels...", did fix position-relative-035 (except
for OS X) but broke 1px borders.
2015-09-09 11:58:21 -07:00
Glenn Watson
a02d28a732 Handle cases where the layout root is None. Fixes #6375. 2015-09-08 11:19:58 +10:00
Patrick Walton
683290e109 layout: Use a special path that treats margin: auto as zero for inline-block
inline size computation.

Places the search icon in the right place on the Google SERPs.
2015-09-04 20:42:57 -07:00
Ms2ger
58b5cd27de Update CSS tests to revision 584b6cdd10401df603bd7bdf4ec801fcddc65468 2015-09-04 16:52:07 +02:00
Matt Brubeck
afafb0b71c Implement get_table_for_tag on FreeType
Also fixes use-after-free of FontTable buffers.
2015-09-03 13:35:44 -07:00
Corey Farwell
c51deb9a6e Update CSS tests to revision c8ec30de8099360ecf6581035bfdf2180fcc9755
Necessary for:

https://github.com/servo/servo/pull/7117
2015-09-02 08:18:30 -04:00
Patrick Walton
ce327b8231 tests: Mark some WPT tests as passing now. 2015-09-01 11:30:15 -07:00
Ms2ger
5fb39b2af9 Update CSS tests to revision 2a5740eaf7fa99181681a89bc6789dbf5b839995 2015-08-27 13:35:08 +02:00
Patrick Walton
5c51a6214e layout: Fix calculation of overflow for stacking contexts that contain
`position: relative` fragments.

Fixes placement of the header on espn.go.com.
2015-08-25 15:08:28 -07:00
Patrick Walton
35c67b22e5 layout: Don't crash if quotes: none is specified and generated content
uses quotes.

Avoids a crash on The Verge.
2015-08-24 17:00:23 -07:00
bors-servo
7945c174a6 Auto merge of #7291 - pcwalton:has-layer-flag, r=mbrubeck
layout: Centralize the logic that determines whether fragments get layers in the fragment.

…so that it can be activated when we're forcing
the creation of extra layers due to positioned descendants that
themselves have layers.

The newly failing tests were tests that accidentally passed due to
incorrect stacking order.

Closes #7281.

r? @mbrubeck

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7291)
<!-- Reviewable:end -->
2015-08-22 15:56:05 -06:00
Patrick Walton
ec1c90df41 layout: Centralize the logic that determines whether fragments get
layers in the fragment, so that it can be activated when we're forcing
the creation of extra layers due to positioned descendants that
themselves have layers.

The newly failing tests were tests that accidentally passed due to
incorrect stacking order.

Closes #7281.
2015-08-22 12:41:33 -07:00
Patrick Walton
fed904fff5 layout: Make position: relative with non-auto z-index create a
stacking context.

Improves imgur.com and Fast Company articles.
2015-08-22 12:22:33 -07:00
Ms2ger
f235d49372 Update CSS tests to revision d674587d6ae7d2e231d632785559f2613d554eb0 2015-08-21 18:40:37 +02:00
bors-servo
39b7508aa2 Auto merge of #7251 - nox:text-transform-length-change, r=SimonSapin
Correctly handle length-changing mappings in text-transform



<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7251)
<!-- Reviewable:end -->
2015-08-20 06:40:33 -06:00
Anthony Ramine
bb3d3db333 Correctly handle length-changing mappings in text-transform 2015-08-19 12:05:31 +02:00
Patrick Walton
9d41841964 layout: Make table cells' minimum inline sizes override explicitly
specified widths if the latter are too small.

Improves ebay.com.
2015-08-18 14:38:49 -07:00
Anthony Ramine
d885958621 Avoid a panic when handling collapsing borders (fixes #7144)
There is no need to compute next_collapsed_borders_in_block_direction for all
kind of flows when it's used only in the table row case. That also avoids a panic
when the next child is a table colgroup (this should not happen when iterating
over a table row).
2015-08-18 12:56:18 +02:00
Patrick Walton
8640cf5588 layout: Take relative position offsets for inlines and inline-blocks
into account only once.

There were two bugs here: (1) relative position applied to
scanned/unscanned text fragments independently of the container element
that applied that relative position, causing double-counting; (2)
relative position applied to inline block fragments independently of the
wrapped block itself, causing double-counting.

This commit also removes the `cascade_anonymous` function and the
related `Fragment` constructor. They were unused, and their
functionality has been replaced by the `modify_style_for_*` series of
functions.

Closes #7067.
2015-08-12 08:28:35 -07:00
bors-servo
7dc83e7820 Auto merge of #7024 - pcwalton:whitespace-stripping, r=mbrubeck
layout: Rewrite whitespace stripping.

This patch makes Servo unconditionally strip whitespace before text run
scanning (assuming that the `white-space` property allows it). Whitespace
stripping during reflow is now only used for handling whitespace at the ends of
lines; reflow now never attempts to handle ignorable whitespace.

Many CSS tests pass now. There are some new failures, however.

The following reference tests now fail due to a pre-existing bug whereby
whitespace is used to calculate the position of inline hypothetical boxes for
elements with `display: inline; position: absolute`:

* `absolute-replaced-height-036.htm`
* `vertical-align-sub-001.htm`
* `vertical-align-super-001.htm`

The following reference tests fail due to a pre-existing bug whereby we don't
handle `font-size: 0` properly in inline reflow:

* `font-size-zero-1.htm`
* `font-size-zero-2.htm`

The following reference test fails due to the fact that it relied on our
incorrect insertion of whitespace to make room for the black background:

* `inline-formatting-context-007.htm`

r? @mbrubeck

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7024)
<!-- Reviewable:end -->
2015-08-11 12:57:02 -06:00
Patrick Walton
ae378a8c3e layout: Rewrite whitespace stripping.
This patch makes Servo unconditionally strip whitespace before text run
scanning (assuming that the `white-space` property allows it). Whitespace
stripping during reflow is now only used for handling whitespace at the ends of
lines; reflow now never attempts to handle ignorable whitespace.

Many CSS tests pass now. There are some new failures, however.

The following reference tests now fail due to a pre-existing bug whereby
whitespace is used to calculate the position of inline hypothetical boxes for
elements with `display: inline; position: absolute`:

* `absolute-replaced-height-036.htm`
* `vertical-align-sub-001.htm`
* `vertical-align-super-001.htm`

The following reference tests fail due to a pre-existing bug whereby we don't
handle `font-size: 0` properly in inline reflow:

* `font-size-zero-1.htm`
* `font-size-zero-2.htm`

The following reference test fails due to the fact that it relied on our
incorrect insertion of whitespace to make room for the black background:

* `inline-formatting-context-007.htm`
2015-08-11 11:42:20 -07:00
bors-servo
7ce47266ac Auto merge of #7137 - pcwalton:absolute-stacking-contexts, r=glennw
layout: Make absolutely-positioned elements with `z-index: auto` not stacking contexts.

Improves many sites.

Closes #7069.

r? @glennw

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7137)
<!-- Reviewable:end -->
2015-08-11 12:22:14 -06:00
Patrick Walton
d3d59ced36 layout: Make absolutely-positioned elements with z-index: auto not
stacking contexts.

Improves many sites.

Closes #7069.
2015-08-11 11:21:52 -07:00
bors-servo
9c528c6382 Auto merge of #7161 - mbrubeck:underline, r=pcwalton
Snap rectangles to nearest pixels consistently.

Snapping the top-left and bottom-right corners separately can cause a rectangle to change size or even become empty when offset by a subpixel amount.  Instead, this patch snaps the top-left corner, then snaps the size to a whole pixel amount, so any rectangle of a given original size will always have the same snapped size.

Fixes #7152. r? @pcwalton or @glennw

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7161)
<!-- Reviewable:end -->
2015-08-11 11:31:32 -06:00