Commit Graph

82 Commits

Author SHA1 Message Date
Emilio Cobos Álvarez
1ad6102849 servo: Merge #16630 - Make stylo traverse Native Anonymous Content, fixing a bunch of restyle bugs (from emilio:nac); r=bholley,hiro
Source-Repo: https://github.com/servo/servo
Source-Revision: c633e291c93c942d34c731fe6ceb4db3b7347a16
2017-04-27 07:39:42 -05:00
Brian Birtles
c62c31cdbc servo: Merge #16613 - Clear animation-only dirty descendants bit on display:none descendants (from birtles:clear-animation-dirty-bit); r=hiikezoe
PR for [Gecko bug 1359658](https://bugzilla.mozilla.org/show_bug.cgi?id=1359658)

When an element has a display:none ancestor we don't traverse it during
restyle. However, at the end of restyling we expect the tree to be free
of dirty bits. We currently take special care to clear the regular
(non-animation) dirty bit on nodes in display:none subtrees in order to
preserve this invariant. This patch applies the same handling to the
animation-only dirty descendants bit.

---
- [X] `./mach build -d` just keeps crashing because mozjs calls sed.exe in a way that breaks it
- [X] `./mach test-tidy` does not report any errors
- [X] There are tests for these changes on the Gecko side

Source-Repo: https://github.com/servo/servo
Source-Revision: e5762cb6953b5e202e8733e39e8267c4b67a9622
2017-04-26 01:47:00 -05:00
Emilio Cobos Álvarez
52f7a0ce71 servo: Merge #16450 - stylo: Support keyword-valued media queries (from emilio:keyword-media-queries); r=heycam
From [Bug 1356074](https://bugzil.la/1356074)

Source-Repo: https://github.com/servo/servo
Source-Revision: 6f7db7c57198811e3e32e94f2917ded3f7f8ace8
2017-04-13 23:09:34 -05:00
Hiroyuki Ikezoe
175ae8e138 servo: Merge #16396 - Preserve restyle hints other than animation hints in propagate() duri… (from hiikezoe:animation-restyle-propagate-fix); r=heycam
…ng animation-only restyle.

<!-- Please describe your changes on the following line: -->

This is PR of https://bugzilla.mozilla.org/show_bug.cgi?id=1354487

---
<!-- 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

<!-- Either: -->
- [X] These changes do not require tests because for stylo.

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- 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: 31ea4208cf1cc043e08fe7447820582007e9af30
2017-04-12 23:57:19 -05:00
Bobby Holley
0cbb6088ed servo: Merge #16358 - Fix up the style sharing cache (from bholley:style_sharing_fixes); r=emilio
Reviewed in:
https://bugzilla.mozilla.org/show_bug.cgi?id=1354895
https://bugzilla.mozilla.org/show_bug.cgi?id=1332525

Source-Repo: https://github.com/servo/servo
Source-Revision: 7ba3f1e4f3064ec3054b2346062758375b8ab117
2017-04-11 22:52:23 -05:00
Hiroyuki Ikezoe
be5f5e96ea servo: Merge #16344 - Call process_animation only if it's not animation-only restyles (from hiikezoe:animation-only-restyle-fix); r=emilio,heycam
<!-- Please describe your changes on the following line: -->
This is a PR of https://bugzilla.mozilla.org/show_bug.cgi?id=1354426

---
<!-- 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

<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because it's for stylo.

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- 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: e6a89899b0bf3e24e7f119e59a4e933bf967bb8d
2017-04-11 14:16:21 -05:00
Bobby Holley
3504d3ae15 servo: Merge #16312 - Make the sequential traversal breadth-first (from bholley:breadth_first_sequential); r=emilio
Reviewed in https://bugzilla.mozilla.org/show_bug.cgi?id=1354806

Source-Repo: https://github.com/servo/servo
Source-Revision: fd2b092839ec5229066ed1d608a81a556f38c55b
2017-04-09 01:55:09 -05:00
Cameron McCormack
1533a6fd42 servo: Merge #16309 - style: add a "for frame reconstruction" mode for restyle traversal (from heycam:restyle-reconstruct); r=bholley
This is the Servo part of https://bugzilla.mozilla.org/show_bug.cgi?id=1351535.

Source-Repo: https://github.com/servo/servo
Source-Revision: 2f67f69e895206135012c7445a86fb07d6e3b6b5
2017-04-09 01:04:57 -05:00
Sebastian Hengst
1f03d38a0c Backed out changeset 186921ff2a55 (bug 1351535) 2017-04-08 16:53:00 +02:00
Sebastian Hengst
f0d71b08b9 Backed out changeset d44f633899ce (bug 1351535) 2017-04-08 16:52:51 +02:00
Sebastian Hengst
a08d5c191a Backed out changeset b1a425c54b79 (bug 1351535) 2017-04-08 16:52:47 +02:00
Cameron McCormack
f423178d4a Bug 1351535 - Part 6: Handle TraversalRestyleBehavior::ForReconstruct in the Servo restyle. r=bholley
MozReview-Commit-ID: 6vz9gHgzK87
2017-04-04 19:32:47 +08:00
Cameron McCormack
96e93dbf57 Bug 1351535 - Part 5.1: Move TraversalFlags into SharedStyleContext. r=bholley
MozReview-Commit-ID: IfLzJ9h6vKT
2017-04-08 16:36:09 +08:00
Cameron McCormack
82695fc683 Bug 1351535 - Part 4: Don't traverse children if the root of the restyle is display:none. r=bholley
If we append a child to a display:none element, and we use StyleNewChildren on
that parent, we should skip restyling the children.

MozReview-Commit-ID: 7A6e7sPNHIA
2017-04-04 19:22:42 +08:00
Xidorn Quan
db3cfc0fac servo: Merge #16297 - Remove servo_url dependency for geckolib (from upsuper:stylo-servo-url); r=SimonSapin
It seems mod attr is not used for geckolib at all, and that is the only place where servo_url is still referenced for geckolib, so we can just remove it.

Source-Repo: https://github.com/servo/servo
Source-Revision: 12a4cc875d44a1a516412dc4c6044e897c0c6e47
2017-04-07 04:34:47 -05:00
Bobby Holley
5c74171efd servo: Merge #16291 - Hoist possibly_expired_animations into CurrentElementInfo (from bholley:possibly_expired); r=emilio
The current mechanism requires threading a lot of this state through a bunch of
callsites that are several layers of abstraction above the code that actually
uses this vector (which is only compiled for servo). Putting it in
CurrentElementInfo gets it nicely out of the way.

Source-Repo: https://github.com/servo/servo
Source-Revision: 48a412abc7d56529770bdbe2cf0f5e6af852538e
2017-04-06 20:07:48 -05:00
Bobby Holley
ed4c76d0fc servo: Merge #16289 - Cascade the primary style before matching pseudos (from bholley:primary_before_pseudos); r=emilio
https://bugzilla.mozilla.org/show_bug.cgi?id=1353960

Source-Repo: https://github.com/servo/servo
Source-Revision: 3beaa8d2e98bd077ba8badf4a2e3bc3ddc51ed0e
2017-04-06 16:32:14 -05:00
Bobby Holley
c78d388127 servo: Merge #16226 - stylo: Introduce is_native_anonymous and cull style traversal of doomed NAC (from bholley:doomed_nac); r=emilio
Reviewed in https://bugzilla.mozilla.org/show_bug.cgi?id=1352570

Source-Repo: https://github.com/servo/servo
Source-Revision: fb3c52e7926cc79078cc444da9d547ade407b9b6
2017-04-01 14:34:33 -05:00
Bobby Holley
edca0a0d2e servo: Merge #16159 - Centralize note_dirty_descendants implementation, and fully propagate dirty_descendants in resolve_style (from bholley:note_dirty_descendants); r=heycam
The current code can leave the tree in an inconsistent state, with the dirty
descendants bit not fully propagated.

Reviewed in https://bugzilla.mozilla.org/show_bug.cgi?id=1350441

Source-Repo: https://github.com/servo/servo
Source-Revision: 8adf1919732a764617ce7c8c26e772a9a7663b98
2017-03-29 06:52:07 -05:00
Emilio Cobos Álvarez
352fc7386b servo: Merge #16148 - style: Cleanup a bit the restyle hint propagation code (from emilio:cleanup-animation-only-restyle); r=hiikezoe
Source-Repo: https://github.com/servo/servo
Source-Revision: 0ebb9ec9e82d7985c477ee71e55f56ab5facedc9
2017-03-27 16:08:09 -07:00
Hiroyuki Ikezoe
0801d9d9b1 servo: Merge #16145 - Animation only restyles (from hiikezoe:animation-only-restyles); r=heycam
<!-- Please describe your changes on the following line: -->
This is a PR of https://bugzilla.mozilla.org/show_bug.cgi?id=1344966

---
<!-- 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

<!-- Either: -->
- [X] These changes do not require tests because it's for stylo.

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- 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: d77fceaf241843d0fee246c1c910072fe041a69e
2017-03-26 21:13:44 -07:00
Emilio Cobos Álvarez
dfca7ce94e servo: Merge #16093 - Bug 1349553: Account for negations of state-dependent selectors (from emilio:state); r=bholley,heycam
Source-Repo: https://github.com/servo/servo
Source-Revision: 301ba366b88821bd85a2a5b700d4671ab3958aca
2017-03-23 01:52:43 -07:00
Simon Sapin
80dfe1b881 servo: Merge #16014 - Per-process lock for CSSOM objects (from servo:style-ref); r=emilio
<!-- Please describe your changes on the following line: -->

Before this PR, every object reflected in CSSOM is in `Arc<RwLock<_>>` to enable safe (synchronized) mutable aliasing. Acquiring all these locks has significant cost during selector matching:

* https://bugzilla.mozilla.org/show_bug.cgi?id=1311469
* https://bugzilla.mozilla.org/show_bug.cgi?id=1335941
* https://bugzilla.mozilla.org/show_bug.cgi?id=1339703

This PR introduce a mechanism to protect many objects with the same `RwLock` that only needs to be acquired once.

In Stylo, there is one such lock per process (in a `lazy_static`), used for everything.

I non-Stylo Servo, I originally intended to have one such lock per document (for author-origin stylesheets, and one per process for user-agent and user sytlesheets since they’re shared across documents, and never mutated anyway). However I failed to have the same document-specific (or pipeline-specific) `Arc` reachable from both `Document` nodes and `LayoutThread`. Recursively following callers lead me to include this `Arc` in `UnprivilegedPipelineContent`, but that needs to be serializable. So there is a second process-wide lock.

This was previously #15998, closed accidentally.

---
<!-- 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: -->
- [ ] 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: bb54f0a429de0e8b8861f8071b6cf82f73622664
2017-03-19 14:31:19 -07:00
Emilio Cobos Álvarez
c4d0256456 servo: Merge #15791 - Bug 1340334: Allow sibling hints in StoredRestyleHint, and handle them correctly (from emilio:hint); r=bholley
Reviewed upstream by Bobby.

Source-Repo: https://github.com/servo/servo
Source-Revision: d0856fd4cdc8dacd0f2c4034d32e495e76490d0a
2017-03-01 18:08:43 -08:00
Bobby Holley
e59f7e85ce servo: Merge #15599 - Implement "handled for descendants" tracking for RestyleDamage (from bholley:damage_handled); r=emilio
Reviewed in https://bugzilla.mozilla.org/show_bug.cgi?id=1340022

Source-Repo: https://github.com/servo/servo
Source-Revision: eb916f290334f9f56c4c8680e25224a16e4c7d59
2017-02-17 10:20:44 -08:00
Bobby Holley
685e0ab700 servo: Merge #15480 - Refactor style computation (from bholley:refactor_style_computation); r=emilio
See https://bugzilla.mozilla.org/show_bug.cgi?id=1338382

Source-Repo: https://github.com/servo/servo
Source-Revision: 0dd4afcf6dd3efb8e9f6e620e8e0dc7b135f8eee
2017-02-10 10:34:57 -08:00
Bobby Holley
3fcc873d0e servo: Merge #15462 - Accumulate parent elements that need selector bits set on the ThreadLocalStyleContext (from bholley:accumulate_selector_flags); r=emilio
Discussion and review in https://bugzilla.mozilla.org/show_bug.cgi?id=1336646

Source-Repo: https://github.com/servo/servo
Source-Revision: cbfd4464270f8690b90b9b96c395523a3a39e2de
2017-02-08 19:33:27 -08:00
Emilio Cobos Álvarez
40e295109a servo: Merge #15317 - style: Avoid selector-matching when only the style attribute is changed (from emilio:style-attr-restyle); r=bholley
r? @bholley

Source-Repo: https://github.com/servo/servo
Source-Revision: fb7f65fc5711f41b991b72ed97d7286dd16301ed
2017-02-02 03:00:22 -08:00
Emilio Cobos Álvarez
db4c7f27cd servo: Merge #15160 - style: Expose the traversal kind to the style system (from emilio:expose-traversal-kind); r=bholley
This way we'll be able to take different paths for the sequential and parallel
traversals in some concrete cases.

This is a preliminar patch to fix bug 1332525.

r? @bholley

Source-Repo: https://github.com/servo/servo
Source-Revision: 1934a338757a84a6efddcbd3ecf051cd128a8d18
2017-01-24 17:02:41 -08:00
Bobby Holley
f98f069a4c servo: Merge #15119 - Add style performance statistics to Servo (from bholley:traversal_stats); r=emilio
Gecko bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1331856

Source-Repo: https://github.com/servo/servo
Source-Revision: f8418a328435b114f6d8bb41c378a5bf0dfa4428
2017-01-19 15:27:34 -08:00
Bobby Holley
15caa1a60d servo: Merge #14997 - stylo: Various crash fixes (from bholley:bug_1329845); r=heycam
Corresponding gecko bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1329854

Source-Repo: https://github.com/servo/servo
Source-Revision: cc8bee8f8990e9bb23171fe65a259978749a9d2f
2017-01-12 19:23:17 -08:00
Bobby Holley
5562c318ba servo: Merge #14907 - Give up on hoisting ElementData into the frame and eliminate the concept of consuming styles (from bholley:eliminate_consume); r=emilio
Servo PR for the work in https://bugzilla.mozilla.org/show_bug.cgi?id=1325734

Source-Repo: https://github.com/servo/servo
Source-Revision: 2a2a89b7e401e72a4d8d6199c483d7ab09ff5c1e
2017-01-09 17:26:50 -08:00
Emilio Cobos Álvarez
69f9dbad9f servo: Merge #14904 - Allow sharing non-common style affecting attribute selectors (from emilio:non-common-attrs); r=bholley
Something I just noticed while re-reading that code is that we prevent sharing among siblings with different non-common attributes, even though we already have the infra to match those selectors:

```rust
    if !match_same_not_common_style_affecting_attributes_rules(element,
                                                               candidate_element,
                                                               shared_context) {
        miss!(NonCommonAttrRules)
    }
```

Source-Repo: https://github.com/servo/servo
Source-Revision: 2225ccd46416443b1e196a14f5ff1b5dff5001d0
2017-01-07 15:28:15 -08:00
Emilio Cobos Álvarez
cefdb77f9b servo: Merge #14801 - style: Document and force documentation in a big chunk of the style crate (from emilio:no-missing-docs); r=mbrubeck,Manishearth,Wafflespeanut
Style no forced docs for the properties code and similar, but I ran out of time, and I think it's a nice improvement.

I'd appreciate a fast-ish turn-around time because this is pretty much prone to bitrot.

Source-Repo: https://github.com/servo/servo
Source-Revision: bd67163438317daa711b2411ce302aaf5bf4136a
2016-12-31 03:19:02 -08:00
Cameron McCormack
d12b81017f servo: Merge #14776 - stylo: Don't persist styles on elements not in the document (from heycam:not-in-doc-persist); r=emilio
<!-- Please describe your changes on the following line: -->

This is the Servo half of https://bugzilla.mozilla.org/show_bug.cgi?id=1324983, which @emilio has already reviewed.

Source-Repo: https://github.com/servo/servo
Source-Revision: b49eb6f56664e5e8db326466726ccf3b58397168
2016-12-29 19:00:30 -08:00
Bobby Holley
48507255b1 servo: Merge #14751 - style: Add a special, explicit path for lazy style resolution and use it for getComputedStyle (from heycam:transient); r=heycam
<!-- Please describe your changes on the following line: -->

This is the Servo-side part of @bholley's final patch of https://bugzilla.mozilla.org/show_bug.cgi?id=1324627, which I've already r+ed.

Source-Repo: https://github.com/servo/servo
Source-Revision: f36b5531cb7a28036bdb29cf5619ec0da1030849
2016-12-27 19:55:01 -08:00
Bobby Holley
bff9870495 servo: Merge #14662 - Hoist bloom filter into scoped TLS, and remove a bunch of complexity and unsafety from the style system (from bholley:bloom_tls); r=emilio
With this PR, the only remaining usage of UnsafeNode is the transition stuff, which is servo-only and probably going to be rewritten over the course of stylo. The parallel traversal is now fully typechecked and safe. \o/

r? @emilio

Source-Repo: https://github.com/servo/servo
Source-Revision: b35ab98132539d4e6f1fcd4b3307eae40e387861
2016-12-22 12:02:38 -08:00
Bobby Holley
bcc4d2bed9 servo: Merge #14642 - Use Scoped TLS in the style system and eliminate UnsafeNode usage in the StyleSharingCandidateCache (from bholley:scoped_tls); r=emilio
See the discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1323372

@emilio Please review, but don't merge yet until we get the upstream changes into Rayon.

CC @SimonSapin @heycam @upsuper @Manishearth @pcwalton @nikomatsakis

Source-Repo: https://github.com/servo/servo
Source-Revision: 8fd8d6161426af386c0dfd3d13968a409474eb16
2016-12-21 11:11:12 -08:00
Bobby Holley
ee2dc4ec29 servo: Merge #14610 - Simplify style context architecture and make it safer (from bholley:style_context_refactor); r=emilio
See the discussion at https://bugzilla.mozilla.org/show_bug.cgi?id=1323372

Not done here, but want to get a try run in on the first patch.

Source-Repo: https://github.com/servo/servo
Source-Revision: a4ecdf2d5fda281f25e2689852bc2134429e07c6
2016-12-16 11:38:27 -08:00
Bobby Holley
d6f1d4b998 servo: Merge #14581 - stylo: Avoid traversing children of XBL-bound elements during initial styling (from bholley:dont_traverse_xbl); r=heycam
Corresponding Gecko bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1294572

CC @heycam @emilio

Source-Repo: https://github.com/servo/servo
Source-Revision: 535563be313d2766267872a822642e68b686a4a9
2016-12-14 19:41:12 -08:00
Alan Jeffrey
965a687125 servo: Merge #14592 - Remove the util crate (from asajeffrey:util-goodbye); r=mbrubeck
<!-- Please describe your changes on the following line: -->

This PR removes the `util` crate.

* Replaced the `spawn_named` and `clamp` functions by appropriate uses of `std:🧵:Builder::spawn`, `std::cmp::min` and `std::cmp::max`.
* Moved `opts`, `prefs` and `resource_files` into a new `config` crate.
* Moved `remutex` and `geometry` into their own crates.

---
<!-- 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 do not require tests because they are refactorings

<!-- 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: 4eb653817f87e5fb47de34356f558eb76ecbca9f
2016-12-14 16:48:42 -08:00
Bobby Holley
7919f9bf62 servo: Merge #14560 - stylo: Fix some crashes on incubator (from bholley:fix_crashes); r=heycam
Corresponding gecko bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1322945

Source-Repo: https://github.com/servo/servo
Source-Revision: 855358866640605fe055d792832db2f5e74fe197
2016-12-12 19:13:03 -08:00
Bobby Holley
e075eff5c1 servo: Merge #14436 - Make restyle tracking more granular (from bholley:granular_restyle); r=emilio
The primary idea of this patch is to ditch the rigid enum of Previous/Current
styles, and replace it with a series of indicators for the various types of
work that needs to be performed (expanding snapshots, rematching, recascading,
and damage processing). This loses us a little bit of sanity checking (since
the up-to-date-ness of our style is no longer baked into the type system), but
gives us a lot more flexibility that we'll need going forward (especially when
we separate matching from cascading). We also eliminate get_styling_mode in
favor of a method on the traversal.

This patch does a few other things as ridealongs:
* Temporarily eliminates the handling for transfering ownership of styles to the
  frame. We'll need this again at some point, but for now it's causing too much
  complexity for a half-implemented feature.
* Ditches TRestyleDamage, which is no longer necessary post-crate-merge, and is
  a constant source of compilation failures from either needing to be imported
  or being unnecessarily imported (which varies between gecko and servo).
* Expands Snapshots for the traversal root, which was missing before.
* Fixes up the skip_root stuff to avoid visiting the skipped root.
* Unifies parallel traversal and avoids spawning for a single work item.
* Adds an explicit pre_traverse step do any pre-processing and determine whether
      we need to traverse at all.

Source-Repo: https://github.com/servo/servo
Source-Revision: b9a8ccd775c3192e3810a1730b1d0bc2b5c9dfb6
2016-12-09 17:01:05 -08:00
Emilio Cobos Álvarez
208c927bbc servo: Merge #14353 - Fix the bloom filter stuff (from emilio:fix-bloom); r=SimonSapin
<!-- Please describe your changes on the following line: -->

I think I got the numbers right, want to do a try run before just in case.

r? @SimonSapin

Source-Repo: https://github.com/servo/servo
Source-Revision: 2289ad53dd9a2666645b1f7eef07636e21c1607e
2016-11-28 10:30:19 -08:00
Bobby Holley
58a74f2f07 servo: Merge #14300 - stylo: Basic infrastructure for RestyleHint-driven traversal (from bholley:restyle_driven_traversal); r=emilio
Gecko Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=131701

(Don't review yet, will flag on the gecko bug when the time comes)

Source-Repo: https://github.com/servo/servo
Source-Revision: d98abaec20e624aa89a3abddf4cf2a6399951ef1
2016-11-25 09:00:44 -08:00
Bobby Holley
96efaf4eea servo: Merge #14175 - Separate selector matching from property cascading (from bholley:separate_cascade); r=emilio
This builds on @emilio's rule tree work. The goal is to raise the boundary between rule node computation and property cascading higher up the callstack, so that the new traversal architecture can decide to do one but not the other.

Source-Repo: https://github.com/servo/servo
Source-Revision: 3b2e3dcfb98464d24ad721a03009a1d31f54b31d
2016-11-11 16:35:34 -06:00
Simon Sapin
da7b122259 servo: Merge #13202 - Rule tree, v1 (from emilio:rule-tree); r=SimonSapin,Manishearth,emilio
<!-- 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

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

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

This patch introduces infrastructure for the rule tree, and constructs it.

We don't use it yet, nor have good heuristics for GC'ing it, but this should not
happen anymore once we store the rule node reference in the node.

I haven't messed up with memory orders because I want to do a try run with it,
then mess with them.

Source-Repo: https://github.com/servo/servo
Source-Revision: ac0475971bb24a63ca5d36d1d17e3036ddb99049
2016-11-05 17:11:24 -05:00
Bobby Holley
036fdae6f7 servo: Merge #14010 - incremental restyle: Centralize pre-styling setup, eliminate RestyleResult, and drop data for display:none subtrees (from bholley:element_data_management); r=emilio
Source-Repo: https://github.com/servo/servo
Source-Revision: cf9d282914c65d712635b14636a62003b863bdf0
2016-11-01 13:05:46 -05:00
Bobby Holley
ba0cef16e3 servo: Merge #13956 - incremental restyle: Hoist most styling functionality from TNode to TElement (from bholley:more_telement); r=emilio
This is a continuation of the work in #13951. I'm separating it out into a separate PR since the aforementioned patch has a green try run and this one doesn't yet.

Source-Repo: https://github.com/servo/servo
Source-Revision: b611e5c3b219e8f6aa9a7937aa7f5ea552762cd4
2016-10-29 17:14:10 -05:00
Bobby Holley
b1493ef25d servo: Merge #13934 - Only traverse elements from style (from bholley:skip_text_nodes); r=emilio
This is part of the new incremental restyle architecture work. I have patches to element-ify things more, but want to get this in the tree first.

Source-Repo: https://github.com/servo/servo
Source-Revision: 87ef5487179a5b4c556361ad0c77c798b1edd4e1
2016-10-27 12:32:45 -05:00