Commit Graph

263 Commits

Author SHA1 Message Date
Patrick Walton
c719e3c8ef servo: Merge #13705 - layout: Don't touch the inline positions of block children unless they are to be reflowed (from pcwalton:incremental-float); r=notriddle
See the comment added to
`BlockFlow::propagate_assigned_inline_size_to_children()` for details.

Closes #13704.

r? @notriddle

Source-Repo: https://github.com/servo/servo
Source-Revision: 0ffbba94fa141f0049c96b3c30dccc22b1b43e6c
2016-10-12 16:00:37 -05:00
Patrick Walton
3c5b6534c7 servo: Merge #13685 - layout: Don't use the existing block position as the float ceiling when placing block formatting contexts in the sequential fallback (from pcwalton:block-formatting-context-fallback-placement); r=notriddle
The existing block position isn't yet computed at that time, so it
contains junk data. It just so happened to work on first reflow because
that value is usually set to zero, but it usually failed on subsequent
reflows.

Improves certain Wikipedia pages.

Closes #13630 (though Google is still broken; it was a separate bug and
will be split off into a separate issue).

r? @notriddle

Source-Repo: https://github.com/servo/servo
Source-Revision: cad5a4e3261ddb82b542b9a087b48daab51bbfd3
2016-10-11 01:11:24 -05:00
Alexandrov Sergey
49432eaed4 servo: Merge #13589 - Support SVG element (from splav:SVGElement#12974); r=pcwalton,Ms2ger
<!-- Please describe your changes on the following line: -->
minimal SVG element implementation
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #12974 (github issue number if applicable).

<!-- Either: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

Source-Repo: https://github.com/servo/servo
Source-Revision: dad3b4785a73aa6ddea5ed50ee4ef01bd4049c8d
2016-10-07 17:40:13 -05:00
Michael Howell
40eb32d066 servo: Merge #13401 - Implement sequential fallback to float speculation (from notriddle:master); r=pcwalton
This shouldn't impact any pages that are already rendering correctly, but it is a very naive implementation of this pass.

---

- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #13284 and fix #13223
- [X] There are tests for these changes

Source-Repo: https://github.com/servo/servo
Source-Revision: 4ebecc915a13cd944b25738dd5859f1a6072a4ff
2016-09-29 13:16:24 -05:00
Martin Robinson
150309e9aa servo: Merge #13417 - Simplify stacking context collection (from mrobinson:simplify-stacking-context-collection); r=glennw
<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [ ] These changes fix #__ (github issue number if applicable).

<!-- Either: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

Simplify the way that stacking contexts are collected. Instead of
passing the StackingContextId down the tree, pass the parent
StackingContext itself. This will allow future patches to get more
information about the parent stacking context (such as location).

Also remove the return value of collect_stacking_contexts, which was
unused.

Source-Repo: https://github.com/servo/servo
Source-Revision: 81dfa6a96b99eae8a7232eab39de96edf663ba99
2016-09-29 09:01:33 -05:00
Patrick Walton
0ce1837364 servo: Merge #13346 - layout: Make some major improvements to incremental layout to improve CNN (from pcwalton:cnn); r=notriddle
CNN is still too slow to be usable, but this is a partial solution.

r? @notriddle (feel free to reassign if you like)

Source-Repo: https://github.com/servo/servo
Source-Revision: cbe54582727e3d756aa084e94520f2f29f9d7c86
2016-09-26 20:57:59 -05:00
Patrick Walton
e221703fd6 servo: Merge #13302 - layout: Disable the speculation of block formatting contexts' inline sizes if the block formatting contexts have negative margins (from pcwalton:negative-margin-speculation); r=notriddle
The heuristics that determine how and whether floats flow into the
margins are not valid in that case.

Closes #13299.

r? @notriddle

Source-Repo: https://github.com/servo/servo
Source-Revision: 993fbc4320e6429c3edb43c9c5a3221a801f6f6f
2016-09-19 19:22:29 -05:00
UK992
a6ebcb8483 servo: Merge #13205 - Tidy: Fix ordering use statements with braces (from UK992:tidy-sort); r=Wafflespeanut
This hack fixes https://github.com/servo/servo/issues/7412 and matches behavior with rustfmt.

Source-Repo: https://github.com/servo/servo
Source-Revision: 3117787fd2a8b7748cfde1e9b8c5be3c00f2c599
2016-09-08 22:19:19 -05:00
Shing Lyu
15c4abd862 servo: Merge #13175 - Move collapse through margin to the top of block flow (from shinglyu:block-margin-patch); r=notriddle
<!-- Please describe your changes on the following line: -->
Based on the spec, a collapse through box should be put on the top edge of the flow. This fixed ~110 reftests

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #12824  (github issue number if applicable).

<!-- Either: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

Source-Repo: https://github.com/servo/servo
Source-Revision: aa011ea2759683ede76639a1ea889c93c21d1cb8
2016-09-08 17:43:50 -05:00
Michael Howell
b35a45a0a5 servo: Merge #13051 - Fix root flow's size at the browser window's size (from notriddle:root_flow_percent); r=glennw
When `<body>` needs to calculate its size based on `<html>`'s size, that should be the size of the browser window itself.

---

- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #12802 (github issue number if applicable).
- [X] There are tests for these changes OR

Source-Repo: https://github.com/servo/servo
Source-Revision: 07b770b829c7148d3a10e7a7467e114bc2f23125
2016-08-28 19:16:19 -05:00
Michael Howell
c27d7b4b62 servo: Merge #13050 - Fix spelling mistake (from notriddle:tlapd); r=emilio
Source-Repo: https://github.com/servo/servo
Source-Revision: 545ae86dff6513f1f5de083ba3ce64b181368482
2016-08-26 07:19:59 -05:00
Ms2ger
ffcc6c813c servo: Merge #13012 - Stop creating a LayoutContext in build_display_list_for_subtree (from servo:shared-layout-context); r=nox
Source-Repo: https://github.com/servo/servo
Source-Revision: 6191748907e0480059a9a33c5c8c7be42d79efe3
2016-08-24 09:38:31 -05:00
Shing Lyu
bb1708ab02 servo: Merge #12873 - Fix absolute-flow's auto positioning (from shinglyu:abs-margin-patch); r=notriddle,emilio
<!-- Please describe your changes on the following line: -->
If an absolute positioned flow has no top, bottom, left, right property, its hypothetical box position should be the margin-end of its previous sibling, not the border-end.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #12676 (github issue number if applicable).

<!-- Either: -->
- [x] There are tests for these changes

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

Source-Repo: https://github.com/servo/servo
Source-Revision: d687f77fefbe3a9fada4f97913001c7f54218719
2016-08-15 08:19:04 -05:00
Martin Robinson
4902811eaf servo: Merge #12817 - Update to euclid 0.8 (from servo:euclid); r=nox
Source-Repo: https://github.com/servo/servo
Source-Revision: 5b915c403d2e96bd2917e7df4f2a58a6668a0c0e
2016-08-11 20:12:29 -05:00
Pu Xingyu
1958366908 servo: Merge #12330 - Implement flexible box layout for row container (from stshine:flexitem); r=pcwalton
<!-- Please describe your changes on the following line: -->

This pull requests implements basic flexible box layout for row container.
It  has implemented most basic flexbox features, including grow, shrink, multi-line, *reverse properties, and alignment under `justify-content`, `align-items`, `align-self`, `align-content`.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X]  There are tests for these changes

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

r? @pcwalton

Source-Repo: https://github.com/servo/servo
Source-Revision: 15947f8f73bc8145916e1213f559eede815d8529
2016-08-03 09:24:31 -05:00
Ms2ger
422d5a11d3 servo: Merge #12677 - Remove unused inline_size_of_preceding_{left,right}_floats fields from BlockFlow (from Ms2ger:unused-float-sizes); r=Manishearth
Source-Repo: https://github.com/servo/servo
Source-Revision: e9d647ca5401f9603295882fe647a53c4ee88d14
2016-08-01 08:04:30 -05:00
Simon Sapin
1f820224e4 servo: Merge #12515 - Make the style crate more concrete (from servo:concrete-style); r=bholley
Background:

The changes to Servo code to support Stylo began in the `selectors` crate with making pseudo-elements generic, defined be the user, so that different users (such as Servo and Gecko/Stylo) could have a different set of pseudo-elements supported and parsed. Adding a trait makes sense there since `selectors` is in its own repository and has others users (or at least [one](https://github.com/SimonSapin/kuchiki)).

Then we kind of kept going with the same pattern and added a bunch of traits in the `style` crate to make everything generic, allowing Servo and Gecko/Stylo to do things differently. But we’ve also added a `gecko` Cargo feature to do conditional compilation, at first to enable or disable some CSS properties and values in the Mako templates. Since we’re doing conditional compilation anyway, it’s often easier and simpler to do it more (with `#[cfg(feature = "gecko")]` and `#[cfg(feature = "servo")]`) that to keep adding traits and making everything generic. When a type is generic, any method that we want to call on it needs to be part of some trait.

----

The first several commits move some code around, mostly from `geckolib` to `style` (with `#[cfg(feature = "gecko")]`) but otherwise don’t change much.

The following commits remove some traits and many type parameters through the `style` crate, replacing them with pairs of conditionally-compiled API-compatible items (types, methods, …).

Simplifying code is nice to make it more maintainable, but this is motivated by another change described in https://github.com/servo/servo/pull/12391#issuecomment-232183942. (Porting Servo for that change proved difficult because some code in the `style` crate was becoming generic over `String` vs `Atom`, and this PR will help make that concrete. That change, in turn, is motivated by removing geckolib’s `[replace]` override for string-cache, in order to enable using a single Cargo "workspace" in this repository.)

r? @bholley

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #__ (github issue number if applicable).

<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require new tests because refactoring

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

Source-Repo: https://github.com/servo/servo
Source-Revision: 2d01d41a506bcbc7f26a2284b9f42390d6ef96ab
2016-07-20 02:58:34 -05:00
Anthony Ramine
c394aff8fa servo: Merge #12224 - Remove some stuff from util (from nox:die-util-die); r=Ms2ger
Source-Repo: https://github.com/servo/servo
Source-Revision: 3b0dadda529a5ba45a8a0dc394187f43a66e7c1f
2016-07-04 12:57:00 -07:00
Ms2ger
198c27393f servo: Merge #11822 - Avoid creating a LayoutContext in parallel::assign_inline_sizes (from Ms2ger:sharedcontext); r=nox
Source-Repo: https://github.com/servo/servo
Source-Revision: 44b0bddf413563890481fd77e43d3d073bd6b627
2016-06-23 03:03:02 -05:00
Matt Brubeck
c45fa14e30 servo: Merge #11752 - Minor code cleanup in layout (from mbrubeck:cleanup); r=pcwalton
r? @pcwalton

Source-Repo: https://github.com/servo/servo
Source-Revision: 47387a5c442c5a0167b5286fa1113124ba8d67db
2016-06-21 17:51:26 -05:00
Ms2ger
eabac16841 servo: Merge #11804 - Introduce a layout_thread crate; drop the dependency of layout on script (from Ms2ger:layout-thread-crate); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: a94d3ee744fd0ff87bfe0548ba96927e64ce4b54
2016-06-20 17:00:13 -05:00
Ms2ger
3d1fbff800 servo: Merge #11754 - Move ServoLayoutNode and related structs to script (from Ms2ger:wrapper-traits-prep2); r=nox
Source-Repo: https://github.com/servo/servo
Source-Revision: ee8c5c5a67e1181eca163d3cd1189866d230b8f0
2016-06-20 12:54:20 -05:00
Ms2ger
bf839a16e6 servo: Merge #11800 - Remove unused argument to place_float_if_applicable (from Ms2ger:place_float_if_applicable); r=nox
Source-Repo: https://github.com/servo/servo
Source-Revision: c270622bfdd7a409c1a940322f630fd6cbd985c0
2016-06-20 08:17:13 -05:00
Darin Minamoto
65c7a1a11d servo: Merge #11746 - Image with height defined in % resizes properly (from DarinM223:master); r=mbrubeck
<!-- Please describe your changes on the following line: -->

Checked the html in the github issue and the image looks like it is resized properly in Servo.
Fixed image resizing when height is specified in percentages.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #11723  (github issue number if applicable).

<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because this issue is marked with has-test?

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

Source-Repo: https://github.com/servo/servo
Source-Revision: d2db39634e6e39f4cb054e0b443339409ae69350
2016-06-16 03:57:38 -05:00
Patrick Walton
b7f1a50f7b servo: Merge #11398 - script: Keep the DOM-side viewport up to date when scrolling happens in WebRender (from pcwalton:webrender-viewport); r=glennw
This happens asynchronously, just as it does in non-WebRender mode.

This functionality is a prerequisite for doing proper display-list-based
hit testing in WebRender, since it moves the scroll offsets into Servo
(and, specifically, into the script thread, enabling iframe event
forwarding) instead of keeping them private to WebRender.

Requires servo/webrender_traits#55 and servo/webrender#277.

Partially addresses #11108.

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: 27d1f182713077395426a53a9c91ec35c95887ee
2016-05-31 20:54:29 -05:00
Cullen Rhodes
44dc9f68ea servo: Merge #11329 - Report use statements that use {} with only one entry (from c-rhodes:11320); r=jdm
Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data:
- [X ] `./mach build -d` does not report any errors
- [X ] `./mach test-tidy --faster` does not report any errors
- [X ] These changes fix #11320  (github issue number if applicable).

Either:
- [X] There are tests for these changes OR
- [ ] These changes do not require tests because _____

Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process.

Source-Repo: https://github.com/servo/servo
Source-Revision: 2f9796fa696e9514280777398467696dd4f004b3
2016-05-27 07:11:17 -05:00
Per Lundberg
518936c38a servo: Merge #11192 - Removed unused imports (from perlun:remove-unused-imports); r=Manishearth
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #11185
- [X] These changes do not require tests because it only removes dead code.

----

This fixes #11185.

Source-Repo: https://github.com/servo/servo
Source-Revision: 2c674d0397927ef6563feb70e54f46815af55600
2016-05-15 15:41:16 -07:00
Patrick Walton
5879e5dfad servo: Merge #11125 - layout: Take margins in the inline direction into account when guessing the inline-size of block formatting contexts (from pcwalton:reddit-block-formatting-context-fix); r=mbrubeck
Fixes the layout on reddit.com.

Partially addresses #10571.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 98863746aecea688884ca5a0e3c2f6f139f6e787
2016-05-11 00:41:00 -07:00
Cameron McCormack
297bb674e2 servo: Merge #10999 - Move width and height from Box to Position (from heycam:move-width-height); r=SimonSapin
This helps with style struct alignment between Servo and Gecko.

Source-Repo: https://github.com/servo/servo
Source-Revision: 8bc4785bed662f87149260d87e030471c326ec88
2016-05-04 19:52:25 -07:00
Patrick Walton
089c9216d7 servo: Merge #10691 - layout: Fix float speculation with percentage inline sizes, rewrite vertical alignment, fix inline block ascent/descent computation, and fix absolute inline-block hypothetical boxes (from pcwalton:float-fixes); r=mbrubeck
Source-Repo: https://github.com/servo/servo
Source-Revision: 35ba29355f40f27b2febe87aad7d7ffba20160c0
2016-05-04 13:49:23 -07:00
Ben Striegel
f6a1ba268e servo: Merge #10979 - Fix unused mut warning (from bstrie:mutwarn); r=frewsxcv
Source-Repo: https://github.com/servo/servo
Source-Revision: 8e2cb95d2504cc1d82347adbf0f8dbbc6fd0c82a
2016-05-03 01:36:08 -07:00
Matt Brubeck
441472b6cd servo: Merge #10944 - Upgrade a bunch of dependencies (from mbrubeck:bitflags-0.6); r=frewsxcv
Source-Repo: https://github.com/servo/servo
Source-Revision: 8db0367301b5ad5ab5ea4704d57755c166cfd5de
2016-04-30 15:21:22 -07:00
Samuel Harrington
8b85dc3d47 servo: Merge #10941 - Remove dead code left over from #10085 (from samlh:patch-2); r=mbrubeck
cc @pcwalton

Source-Repo: https://github.com/servo/servo
Source-Revision: b5a23a16be861a837f7079244ca901fd0d0bef04
2016-04-30 09:44:25 -07:00
Patrick Walton
8d85b3151a servo: Merge #10623 - layout: Reset values appropriately for floats flowing out of blocks with nonzero inline margins (from pcwalton:reddit-float-fix); r=mbrubeck
These two commits correctly position the hamburger menu icons on http://reddit.com/r/rust.

Source-Repo: https://github.com/servo/servo
Source-Revision: fcb1352e97ece3574eb9bfe6e08d3b97d39e1eba
2016-04-28 10:24:38 -07:00
Patrick Walton
6c4407dbd2 servo: Merge #10458 - layout: Disallow margins from collapsing through block formatting contexts per CSS 2.1 § 8.3.1 (from pcwalton:block-formatting-context-margin-collapse); r=mbrubeck
Closes #10449.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 7d7404333d75cfd1aab3df07597304d5e78617b5
2016-04-15 05:30:28 +05:00
Michael Howell
c5d7a69e4b servo: Merge #10579 - Propogate transformed clipping regions to nested flows (from notriddle:overflow_premature_clip); r=pcwalton
Fixes #10559

Source-Repo: https://github.com/servo/servo
Source-Revision: 84f01d1d7b1b1b893cbb28097b65c21c5fada8b3
2016-04-14 03:02:33 +05:00
malayaleecoder
6ef8f8a460 servo: Merge #10320 - Rename imm_child_iter() and child_iter() (from malayaleecoder:master); r=KiChjang
Fixes #10286

Source-Repo: https://github.com/servo/servo
Source-Revision: 0a1efe4578e43c4ffc2f90ff0118660899a83ac4
2016-04-09 03:24:40 +05:00
Matt Brubeck
c60bf193e9 servo: Merge #10469 - Some minor layout cleanups (from mbrubeck:layout-misc); r=pcwalton
* Prevent unnecessary copying in `strip_leading_whitespace_if_necessary`
* Remove unused argument to `adjust_clipping_region_for_children` (silences a compiler warning)

r? @pcwalton

Source-Repo: https://github.com/servo/servo
Source-Revision: bd2051d06a4b5f5a261b1c816c5ce9960d3e9b23
2016-04-08 09:40:11 +05:00
Patrick Walton
f359e89a5d servo: Merge #10450 - layout: Allow non-absolutely-positioned elements with overflow: scroll set to be scrolled (from pcwalton:overflow-scroll-non-positioned); r=mbrubeck
This makes them establish stacking contexts, which is a CSS 2.1 spec
violation. However, we were already violating the spec here for
absolutely-positioned elements with `overflow: scroll`. It will probably
be easier to fix this spec violation once we either switch entirely to
WebRender or we have multiple layers per stacking context.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: e66e437ae66346883cb2cc700f84d06c44962be1
2016-04-07 21:00:13 +05:00
Mauricio Collares
1501e15311 servo: Merge #10407 - Move some CSS properties to match Gecko's representation (from mauricioc:issue10403); r=bholley
Fixes #10403. Animation had an extra transition-delay property, which was also moved to Box. Let me know if I should squash the commits.

Source-Repo: https://github.com/servo/servo
Source-Revision: 256b865055c10082731b218f41373d47ad632062
2016-04-07 02:48:15 +05:00
Michael Howell
c5dff2d112 servo: Merge #10279 - Fix #10258 (from notriddle:issue_10258); r=mbrubeck
Respect border-box when computing the relative sizes of children.

Source-Repo: https://github.com/servo/servo
Source-Revision: 77444d00be7b6346b632385cb0c1f5e858ff50a2
2016-03-30 12:18:40 +05:00
Per Lundberg
7e97301070 servo: Merge #10277 - Renamed TComputedValues to ComputedValues (from perlun:rename-tcomputedvalues-to-computedvalues); r=SimonSapin
This is a followup to #10210, and a continuation of #10185.

Source-Repo: https://github.com/servo/servo
Source-Revision: 0ec96ac02a6c40ffda98e1074ceb9874dd1fb3cb
2016-03-30 10:34:57 +05:00
Per Lundberg
7dd7483a07 servo: Merge #10210 - ComputedValues is now ServoComputedValues (from perlun:rename-computedvalues-to-servocomputedvalues); r=SimonSapin
This is the first part of #10185. More to follow. I have built this locally with both servo and geckolib without errors; let's see if it succeeds on all platforms as well.

Source-Repo: https://github.com/servo/servo
Source-Revision: 639fdd6b128e0cfd418e4ae0dd78de3f5aecac4c
2016-03-29 17:55:40 +05:00
faineance
13971a6ff8 servo: Merge #10222 - Use self.0 instead of destructuring single item tuple structs (from faineance:master); r=KiChjang
Closes #9698.

Source-Repo: https://github.com/servo/servo
Source-Revision: b97ffffb48080a0b4769f8609a27a68145042945
2016-03-28 03:42:31 +05:00
Patrick Walton
9698fed872 servo: Merge #10085 - layout: Rewrite the block formatting context/float inline-size speculation code (from pcwalton:floats-inout-revamp); r=mbrubeck
The old code tried to do the speculation as a single bottom-up pass
after intrinsic inline-size calculation, which was unable to handle
cases like this:

    <div>
        <div style="float: left">Foo</div>
    </div>
    <div>
        <div style="overflow: hidden">Bar</div>
    </div>

No single bottom-up pass could possibly handle this case, because the
inline-size of the float flowing out of the "Foo" block could never make
it down to the "Bar" block, where it is needed for speculation.

On the pages I tried, this regresses layout performance by 1%-2%.

I first noticed this breaking some pages, like the Google SERPs, several
months ago.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 1554331f06900e69f246ed9986a08aae91a0a71e
2016-03-26 06:38:41 +05:00
Bobby Holley
c3e649c731 servo: Merge #10155 - Generalize the style structs (from bholley:generalize_style_structs); r=SimonSapin
This allows geckolib to pass gecko style structs and have the style system write to them directly, provided we implement all the traits.

Source-Repo: https://github.com/servo/servo
Source-Revision: 605842f193aedc1151ab38a99c49f693c76e5cf3
2016-03-25 02:57:33 +05:00
Patrick Walton
07ae9562fa servo: Merge #9843 - Optimize flat display lists (from pcwalton:optimize-flat-display-lists); r=mrobinson
Flat display lists were a 2x regression on the spheres demo. This patch series fixes that.

See the individual commits for more details.

r? @mrobinson

Source-Repo: https://github.com/servo/servo
Source-Revision: 55fc48e4c46917a0f036d0054fac296bb5719434
2016-03-04 02:19:04 +05:00
Martin Robinson
867b8565bb servo: Merge #9756 - Flatten display list structure (from mrobinson:flat-display-lists-webrender); r=pcwalton
Instead of producing a tree of stacking contexts, display list
generation now produces a flat list of display items and a tree of
stacking contexts. This will eventually allow display list construction
to produce and modify WebRender vertex buffers directly, removing the
overhead of display list conversion.  This change also moves
layerization of the display list to the paint thread, since it isn't
currently useful for WebRender.

To accomplish this, display list generation now takes three passes of
the flow tree:

        1. Calculation of absolute positions.
        2. Collection of a tree of stacking contexts.
        3. Creation of a list of display items.

After collection of display items, they are sorted based upon the index
of their parent stacking contexts and their position in CSS 2.1
Appendeix E stacking order.

This is a big change, but it actually simplifies display list generation.

Source-Repo: https://github.com/servo/servo
Source-Revision: 62814f7cb486bc267a796b7ce58c51d59240fad0
2016-03-02 05:51:08 +05:00
Anthony Ramine
a1c9a0bed1 servo: Merge #9686 - Move util::logical_geometry to style (from nox:mv-logical_geometry); r=Ms2ger
Source-Repo: https://github.com/servo/servo
Source-Revision: eee0d4efeba1ee77e864a495b6e1992c8ad088cc
2016-02-18 14:21:29 +05:00
Patrick Walton
ff81f6ae4e servo: Merge #9522 - layout: Separate out overflow-for-scrolling from overflow-for-paint (from pcwalton:two-overflows); r=mbrubeck
Closes #9484.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: fb3fe3d784c24cdfd8040af0282e5c2182ee2051
2016-02-05 10:28:50 +05:00