Commit graph

7387 commits

Author SHA1 Message Date
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
Hiroyuki Ikezoe
1e5ee9d2d4 Update bindings. 2017-10-10 06:35:49 +09:00
Hiroyuki Ikezoe
175b88afcf Fix mismatched arguments for Servo_SelectorXXX. 2017-10-10 06:35:16 +09:00
Emilio Cobos Álvarez
1d2e9e3ef7
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.

MozReview-Commit-ID: LMUGc8kPhhE
2017-10-09 21:47:20 +02:00
bors-servo
e3624e62a4 Auto merge of #18747 - jdm:serializing-childrenonly, r=jdm
Serializing childrenonly

Rebased from #17896.

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

<!-- 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/18747)
<!-- Reviewable:end -->
2017-10-09 11:12:53 -05:00
bors-servo
8c314ff5d0 Auto merge of #18791 - emilio:faster-custom-props, r=heycam
style: Optimize custom property cascading.

This should help a bunch 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/18791)
<!-- Reviewable:end -->
2017-10-09 09:29:18 -05:00
bors-servo
64aadee62c Auto merge of #18788 - BorisChiou:style/animation_value/debug, r=emilio
Use defualt Debug trait for AnimationValue

We use AnimationValue for animation backend to do interpolation,
accumulation, or computing distance. While debugging it, dumping the
property name is not enough. We need to dump the detailed value contained
in it.

For example:
if we animate ```translate(100px)``` to ```translate(200px)```,
and want to dump ```{:?} => {:?}```, the result is ```transform => transform```.
I think what we want is something like:
```Transform([Translate(100px, 0px, 0px)]) => Transform([Translate(200px, 0px, 0px)])```.

Using default Debug trait is not perfect because there are some redundant type strings,
but it is still better than nothing.

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [x] These changes are related to PR #18415.
- [X] These changes do not require tests because this is debug only.

<!-- 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/18788)
<!-- Reviewable:end -->
2017-10-09 06:51:47 -05:00
Emilio Cobos Álvarez
a6eaa0812a
style: Share custom property declarations if they don't contain variable references. 2017-10-09 12:29:50 +02:00
Emilio Cobos Álvarez
100dd18307
style: use the XBL styleset quirks mode to match XBL rules.
This fixes bug 1405543.

MozReview-Commit-ID: Dv3mt3Fb8Yp
2017-10-09 11:30:37 +02:00
Emilio Cobos Álvarez
7e143372bd
style: Don't go through remove_cycles if there are no references in the specified values. 2017-10-09 09:22:28 +02:00
Emilio Cobos Álvarez
c354f224ff
style: Refactor the custom properties map to have less temporary hashmap entries. 2017-10-09 09:22:28 +02:00
Emilio Cobos Álvarez
1ecd942384
style: Rename CustomPropertiesBuilder::custom_properties to something more descriptive. 2017-10-09 09:22:27 +02:00
Emilio Cobos Álvarez
4914351f2b
style: Hoist cascade() to CustomPropertyBuilder. 2017-10-09 09:22:27 +02:00
Boris Chiou
df07ebde99 Use default Debug trait for AnimationValue.
We use AnimationValue for animation backend to do interpolation,
accumulation, or computing distance. While debugging it, dumping the
property name is not enough. We need to dump the detailed value contained
in it.
2017-10-09 14:06:06 +08:00
Nicholas Nethercote
7628c1236a Rename nsIAtom as nsAtom.
Bug 1400459 devirtualized nsIAtom so that it is no longer a subclass of
nsISupports. This means that nsAtom is now a better name for it than
nsIAtom.
2017-10-09 09:27:11 +11:00
Emilio Cobos Álvarez
d0f080d5dd
style: Introduce CustomPropertiesBuilder.
I'm about to introduce more state here to implement optimizations for custom
property cascading, so this abstraction is useful to encapsulate that state.
2017-10-08 15:01:21 +02:00
Emilio Cobos Álvarez
851b3e32bd
style: allow re-initializing thread_state as long as it's with the same value.
This unbusts running multiple rule-tree benchmarks at the same time.
2017-10-08 12:56:24 +02:00
Emilio Cobos Álvarez
8ea275a376
style: Avoid unused context argument.
In custom_properties::SpecifiedValue::parse.

It's not a big deal now, but it's useful to simplify testing this stuff, since
it avoids forcing us to mock it.
2017-10-08 12:56:24 +02:00
Bobby Holley
f5c5be00a7 Diagnostic map semantics.
MozReview-Commit-ID: C0a5g6xMPY0
2017-10-07 12:54:15 -07:00
Jyotsna Prakash
6c0f87a1d6 ChildrenOnly -> ChildrenOnly(Option<QualName>)
use this updated type from html5ever
2017-10-07 08:05:11 -04:00
Emilio Cobos Álvarez
b0706d5cf0
stylo: Add a mechanism to restrict media-features to UA and chrome sheets.
Reviewed-by: xidorn
Bug: 1396066
MozReview-Commit-ID: 38jRV6mPbE3
2017-10-07 13:13:36 +02:00
Emilio Cobos Álvarez
04b7386070
style: Update bindings. 2017-10-07 13:13:34 +02:00
Xidorn Quan
8fc24bc5fa Backout #18759 2017-10-07 12:27:04 +11:00
bors-servo
04f787dbf9 Auto merge of #18763 - emilio:transition-longhand-id, r=hiro,birtles
style: Check transitions per longhand to know which transitions to keep.

This fixes bug https://bugzilla.mozilla.org/show_bug.cgi?id=1406111

This fixes the fishy TransitionProperty mapping which I complained about in my
previous refactor.

Turns out that those properties could only be longhands, and thus the expansion
we did before that (and which I removed) was correct.

This fixes the bug by moving back to the previous correct behavior but using the
correct types.

The optimization to avoid creating a HashSet if we're transitioning all
properties or had no existing transition is removed since now we're creating a
LonghandIdSet, which is cheap, and that was only a performance optimization.

<!-- 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/18763)
<!-- Reviewable:end -->
2017-10-06 12:56:27 -05:00
bors-servo
a468d05fff Auto merge of #18765 - emilio:unship-moz-se-transitioning, r=upsuper
stylo: Make :-moz-styleeditor-transitioning only valid in UA sheets.

Bug: 1396099
Reviewed-by: xidorn

<!-- 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/18765)
<!-- Reviewable:end -->
2017-10-06 05:28:28 -05:00
bors-servo
6421332fb3 Auto merge of #18764 - bradwerth:onlyDPPX, r=heycam
Change MediaExpressionValue::from_css_value to only accept pixels

MozReview-Commit-ID: Hn3twVa8xLo

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

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

<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because existing tests provide coverage.

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

<!-- 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/18764)
<!-- Reviewable:end -->
2017-10-06 03:39:42 -05:00
Emilio Cobos Álvarez
4d8110c844
style: Simplify it even more. 2017-10-06 10:06:46 +02:00
Emilio Cobos Álvarez
c60b8288bc
style: Check transitions per longhand to know which transitions to keep.
This fixes the fishy TransitionProperty mapping which I complained about in my
previous refactor.

Turns out that those properties could only be longhands, and thus the expansion
we did before that (and which I removed) was correct.

This fixes the bug by moving back to the previous correct behavior but using the
correct types.

The optimization to avoid creating a HashSet if we're transitioning all
properties or had no existing transition is removed since now we're creating a
LonghandIdSet, which is cheap, and that was only a performance optimization.
2017-10-06 10:02:06 +02:00
Boris Zbarsky
b488b321ed Don't assume that inputs to compute_style_with_inputs have any rules.
It could be a text style, which never has any rules attached to it.

Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1406222
2017-10-05 23:16:14 -04:00
Emilio Cobos Álvarez
3916257db7
style: Update bindings. 2017-10-05 20:51:42 +02:00
Emilio Cobos Álvarez
43636e676d
stylo: Restrict system-metric media features to UA and chrome sheets only. r=xidorn
Reviewed-by: xidorn
Bug: 1396066
MozReview-Commit-ID: 38jRV6mPbE3
2017-10-05 20:51:21 +02:00
Emilio Cobos Álvarez
8ec805874d
stylo: Restrict :-moz-system-metric to chrome and ua sheets. r=xidorn
Bug: 1396066
Reviewed-by: xidorn
MozReview-Commit-ID: AyHWP3QgGlA
2017-10-05 20:51:20 +02:00