Commit graph

6718 commits

Author SHA1 Message Date
Emilio Cobos Álvarez
11485edc9e
style: Hide LocalMatchingContext.
This type is a lot of complexity related to a very specific thing such as the
hover and active quirk.

Instead of that, move `nesting_level` to `MatchingContext`, and simplify all
this computing whether the quirk applies upfront, for each complex selector we
test.

This is less error-prone, and also allows simplifying more stuff in a bit.
2017-10-14 17:03:35 +02:00
Emilio Cobos Álvarez
6a5576085c
style: Reformat Rule::new. 2017-10-14 17:03:32 +02:00
bors-servo
de324f8b18 Auto merge of #18880 - emilio:fixup-parse-hack, r=emilio
style: Fixup the hack added in #18867.

The declaration can indeed have the same id if it contains variables, or is a
CSS keyword value.

This was making a WPT test fail, so this is tested, though Servo's WPT import
didn't catch this for some reason.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18880)
<!-- Reviewable:end -->
2017-10-14 09:49:45 -05:00
Emilio Cobos Álvarez
6fbf006680
style: Fixup the hack added in #18867.
The declaration can indeed have the same id if it contains variables, or is a
CSS keyword value.

This was making a WPT test fail, so this is tested, though Servo's WPT import
didn't catch this for some reason.
2017-10-14 15:28:10 +02:00
bors-servo
8b6207c0d6 Auto merge of #18877 - emilio:closest-why, r=nox
stylo: Dumb down the return value of SelectorList_Closest.

So it builds with rust 1.21.

See: https://bugzilla.mozilla.org/show_bug.cgi?id=1408622

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18877)
<!-- Reviewable:end -->
2017-10-14 08:13:59 -05:00
Emilio Cobos Álvarez
b73b5b581b
style: Not all computed value flags are really inherited.
This fixes the fishiness I noticed in:

  https://bugzilla.mozilla.org/show_bug.cgi?id=1407832
2017-10-14 14:48:27 +02:00
Emilio Cobos Álvarez
e9a26f3a89
style: Update bindings. 2017-10-14 14:04:53 +02:00
bors-servo
2be76c5fd7 Auto merge of #18867 - emilio:parse-hack, r=heycam
style: Dishonor display: -moz-box if -webkit-box was specified before

This is a compatibility hack that Gecko supports that is apparently important for android.

I want to remove it, but let's see...

See https://bugzilla.mozilla.org/show_bug.cgi?id=1407701 for reference.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18867)
<!-- Reviewable:end -->
2017-10-14 05:27:51 -05:00
Emilio Cobos Álvarez
6d694a4bcd
style: Dishonor display: -moz-box if -webkit-box was specified before.
Bug: 1407701
2017-10-14 11:31:01 +02:00
Emilio Cobos Álvarez
25c303ee62
style: Be clearer about whether a declaration comes from parsing or not.
This introduces DeclarationSource, to see if a declaration has been parsed or
set from CSSOM in a declaration block.

The Servo_DeclarationBlock_SetFoo and similar callers are changed to
DeclarationSource::CssOm because their semantics are more CSSOM-y, but it
shouldn't matter since they should all be checked before hand with
Servo_DeclarationBlock_PropertyIsSet.
2017-10-14 11:30:59 +02:00
bors-servo
db29af160c Auto merge of #18864 - emilio:reformat, r=jdm
style: Reformat a few signatures to follow a consistent style.

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18864)
<!-- Reviewable:end -->
2017-10-13 14:11:02 -05:00
Emilio Cobos Álvarez
f64f8b8be2
style: Share code for Element::Closest. 2017-10-13 17:21:31 +02:00
Emilio Cobos Álvarez
9e6c49d479
style: Share code for Element::Matches. 2017-10-13 17:21:26 +02:00
Emilio Cobos Álvarez
77f115b467
stylo: Remove unused function. 2017-10-13 17:01:36 +02:00
Emilio Cobos Álvarez
09d3a11c86
style: Reformat a couple signatures.
MozReview-Commit-ID: 7Wdvj7i8ClR
2017-10-13 17:01:31 +02:00
Emilio Cobos Álvarez
e447f819a2
style: Make InvalidationProcessor methods be &mut self.
This would allow querySelector / querySelectorAll to mutate the list of matched
nodes as it sees fit.
2017-10-13 12:17:02 +02:00
Emilio Cobos Álvarez
9034e6a732
style: Add a way to skip the "invalidation on eager pseudo invalidates self" bit. 2017-10-13 12:17:02 +02:00
Emilio Cobos Álvarez
ecdb10ef5c
Be more precise in should_process_descendants. 2017-10-13 12:17:02 +02:00
Emilio Cobos Álvarez
9e61c1962b
style: Unify invalidated_child with invalidated_descendants.
I think invalidated_descendants was buggy, and this fixes it.
2017-10-13 12:17:01 +02:00
Emilio Cobos Álvarez
557353c1f6
style: Move the bounds up in InvalidationProcessor. 2017-10-13 12:17:00 +02:00
Emilio Cobos Álvarez
a5e2f2c76c
style: Isolate all the restyling related logic in the invalidator in an InvalidationProcessor trait.
Ditto, no change in behavior.
2017-10-13 12:17:00 +02:00
Emilio Cobos Álvarez
b9b3e592dd
style: Split the invalidation collection from the invalidator step.
This is the first step in reusing the invalidation machinery for other stuff,
potentially including QuerySelector / QuerySelectorAll.
2017-10-13 12:16:59 +02:00
Xidorn Quan
1251537459 Rewrite cycle removal algorithm of custom properties and integrate it with substitution 2017-10-13 10:55:24 +11:00
bors-servo
bc18ef7861 Auto merge of #18850 - emilio:bindgenup, r=jdm
Update bindgen.

This includes a clang-sys upgrade that removes crashes in linux32, and nothing
else.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18850)
<!-- Reviewable:end -->
2017-10-12 09:06:22 -05:00
Emilio Cobos Álvarez
8c3e742cbf
Update bindgen.
This includes a clang-sys upgrade that removes crashes in linux32, and nothing
else.
2017-10-12 14:43:10 +02:00
Emilio Cobos Álvarez
3e9bfdd72e
stylo: Remove :-moz-system-metric pseudo-class.
Bug: 1405311
Reviewed-by: xidorn
MozReview-Commit-ID: CIF64dG1F2k
2017-10-12 14:04:32 +02:00
bors-servo
5682eeff48 Auto merge of #18843 - upsuper:author-text-shadow, r=heycam
Remove text-shadow handling from HasAuthorSpecifiedRules

This is the Servo side change of [bug 1363088](https://bugzilla.mozilla.org/show_bug.cgi?id=1363088).

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18843)
<!-- Reviewable:end -->
2017-10-12 03:12:26 -05:00
bors-servo
82a013ae07 Auto merge of #18844 - jryans:stylo-visited-reparent-cascade, r=emilio
Limit visited cascade for reparenting

The specialized cascade flow in `stylist::compute_style_with_inputs` (used with
reparenting) currently computes all properties for visited styles, but we only
need visited-dependent properties.

This adds the cascade flag to reduce the work to visited-dependent properties
only, like we do for the regular cascade flow.

https://bugzilla.mozilla.org/show_bug.cgi?id=1407813

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18844)
<!-- Reviewable:end -->
2017-10-12 01:04:57 -05:00
J. Ryan Stinnett
0eb7d65e73 Limit visited cascade for reparenting
The specialized cascade flow in `stylist::compute_style_with_inputs` (used with
reparenting) currently computes all properties for visited styles, but we only
need visited-dependent properties.

This adds the cascade flag to reduce the work to visited-dependent properties
only, like we do for the regular cascade flow.

MozReview-Commit-ID: FGCj6GPnQOB
2017-10-11 23:50:55 -05:00
Xidorn Quan
96d0529be5 Remove text-shadow handling from HasAuthorSpecifiedRules 2017-10-12 15:20:47 +11:00
bors-servo
99e15f0f03 Auto merge of #18803 - heycam:more-custom-prop-opts, r=emilio
style: more custom properties optimizations

These help slightly with https://bugzilla.mozilla.org/show_bug.cgi?id=1405411.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18803)
<!-- Reviewable:end -->
2017-10-11 22:51:51 -05:00
Cameron McCormack
c05e45fdd1 style: Skip custom properties comparison if other inherited properties changed. 2017-10-12 10:44:46 +08:00
Cameron McCormack
51c1fb681d style: Avoid cloning inherited CustomPropertiesMap when cascading properties with the same value. 2017-10-12 10:33:34 +08:00
J. Ryan Stinnett
cedc17550c Clear visited rules for text inheritance
There are two key steps when resolving text styles with `::first-line`:

1. `ResolveStyleForText` computes the initial style of the text via
   `Servo_ComputedValues_Inherit`
2. `ReparentStyleContext` is called to update style data when the first line
   of text is moved to be a child of the `::first-line` frame

Before this patch, `Servo_ComputedValues_Inherit` would clear out unvisited
rules, but visited styles (with rules inside) were cloned as-is, meaning that
step 1 might leave the text node with a style that has:

* Unvisited rules: None
* Visited rules: Some

When we later go to step 2 and re-parent onto the `::first-line` styles, we try
to cascade with these leftover visited rules.  This causes any `::first-line`
styles from our parent to be overridden by these rules which are no longer quite
right for the new frame tree.

In this patch, we resolve this by changing `StyleBuilder::for_inheritance`
(which is used by step 1's `Servo_ComputedValues_Inherit`) to also clear out
visited rules, so that we use the same logic for both unvisited and visited text
styles when reparenting onto the `::first-line` frame.

MozReview-Commit-ID: 3sgc4eGHBXs
2017-10-11 18:45:45 -05:00
bors-servo
105c5d2a06 Auto merge of #18826 - emilio:invalidation-xbl-stuff, r=heycam
style: Fix invalidation collection for XBL when quirks modes don't match.

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18826)
<!-- Reviewable:end -->
2017-10-11 10:59:05 -05:00
Cameron McCormack
7e31d069be style: Support more selectors in the style sheet invalidator.
In addition to being able to invalidate just based on local name, this
also adds support for invalidating based on selectors with no ancestor
combinator in them (resulting in a RESTYLE_SELF for those elements that
match).
2017-10-11 19:02:41 +08:00
Emilio Cobos Álvarez
5723cf7d13
style: Tweak the quirks mode while collecting invalidations in XBL stuff. 2017-10-11 11:12:58 +02:00
Emilio Cobos Álvarez
bb6ff9575d
style: Store the quirks mode directly in InvalidationCollector. 2017-10-11 11:10:39 +02:00
Xidorn Quan
0c40ae70ed Support pseudo-element properly in HasAuthorSpecifiedRules. 2017-10-11 10:29:32 +11:00
bors-servo
b1926b4656 Auto merge of #18807 - emilio:ex-calc, r=jdm
style: Fix ex computation with more than one operand.

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18807)
<!-- Reviewable:end -->
2017-10-10 14:13:29 -05:00
Emilio Cobos Álvarez
90ee40f43f
style: Fix ex computation with more than one operand. 2017-10-10 18:41:23 +02:00
Simon Sapin
c36ac69d48 CSS parsing error types: flatten nested enums more still 2017-10-10 18:04:08 +02:00
Simon Sapin
46ea99d54b CSS parsing error types: flatten nested enums somewhat 2017-10-10 13:28:30 +02:00
Simon Sapin
c64374bc58 Use the location in the error value when reporting a CSS error 2017-10-10 13:28:29 +02:00
Simon Sapin
c0f8f15f39 Update to cssparser 0.22 (source location in error types) 2017-10-10 13:28:17 +02:00
Simon Sapin
056e599562 Use the current parser location for CSS error
… rather than the start location of the current construct.
This likely places the error just *after* of the unexpected token
whereas before would be best, but that’s likely a much bigger change.

See https://bugzilla.mozilla.org/show_bug.cgi?id=1378861
2017-10-10 13:27:01 +02:00
bors-servo
55a7fd75b4 Auto merge of #18738 - hiikezoe:use-atom-for-animation-name-property, r=xidorn
Use atom for animation name property

<!-- Please describe your changes on the following line: -->
https://bugzilla.mozilla.org/show_bug.cgi?id=1329169

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

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18738)
<!-- Reviewable:end -->
2017-10-10 04:34:47 -05:00
Hiroyuki Ikezoe
fd2ccee84d Update bindings. 2017-10-10 18:33:49 +09:00
Hiroyuki Ikezoe
e0ef378b20 Use atom for animation-name property 2017-10-10 17:10:02 +09:00
bors-servo
27cb13314e Auto merge of #18798 - emilio:faster-custom-props, r=SimonSapin
style: Optimize custom properties cycle removal.

After #18791, this is the major custom_properties perf bottleneck in the
testcase from bug 1405411.

I'm looking into how to efficiently merge this into `substitute_all`, but
meanwhile this is worth landing, and makes most of the overhead go away.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18798)
<!-- Reviewable:end -->
2017-10-10 02:47:29 -05:00