This makes the line breaker determine the final block positions of each
line rather than doing it in a separate pass afterward. Not only does
this simplify the code, it makes `vertical-align` and float placement
interact properly.
style: Add infrastructure to support lazy pseudo-elements
This builds on top of #10815, so it's really just the last commit the one that should be reviewed.
I tried to apply the new infrastructure to servo, but failed (for now?).
The problem with it is that it'd require `ThreadSafeLayoutElement` to implement `selectors::Element`, which is a lot of work and might be racy (not totally sure about it though). Thus, I prefered to keep selectors eager until knowing that it's safe to do it.
r? @mbrubeck for style changes, @bholley for the geckolib changes (minimal for now, glue + a list of lazy PEs must be added)
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/10934)
<!-- Reviewable:end -->
Minor reduction in the amount of allocation display list building does
Use `mem::replace` to perform the lifetime-trick without allocating a whole new buffer.
(An older of this switched from the built-in heapsort to a non-allocating introsort. Unfortunately, introsort is not a stable sorting algorithm, and the display list system relies on it being stable.)
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/10983)
<!-- Reviewable:end -->
Fixed conflict
Fixed merge issue
Finished implementation
Disable tinyfiledialogs on Windows
addressed comments
Use ancestor's SubpageId
Move display alert from method to function
Add extra test for nested iframes
Addressed comments
Updated tinyfiledialogs
Implement basic <media> infrastructure
This gets us to the point where we can start playing with actually integrating rust-media to process the data received by the network request, as currently it's just ignored.
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8454)
<!-- Reviewable:end -->
These can't be supported in Servo as of right now, because I'm not
totally sure the accesses that should be done in layout would be
thread-safe.
It can be revisited later though.