Emilio Cobos Álvarez
1f2b79bc30
selectors: Avoid looking at MatchingMode if the selector isn't the topmost.
...
Also, switch the hover quirk to the same mechanism.
Bug: 1379696
Reviewed-By: bholley
MozReview-Commit-ID: KrmNqNyASf6
2017-07-11 03:52:07 +02:00
Josh Matthews
0b43d0072c
stylo: Update rust-cssparser; extract more specific error types when reporting (bug 1352669).
2017-07-10 20:46:12 -04:00
Gecko Backout
32269fa7cc
Backed out changeset fec394734f83 (bug 17624) for build bustage a=backout CLOSED TREE
...
Backs out https://github.com/servo/servo/pull/17624
2017-07-06 21:58:15 +00:00
Josh Matthews
f5a3830ea2
stylo: Update rust-cssparser; extract more specific error types when reporting (bug 1352669).
2017-07-06 14:32:37 -04:00
Simon Sapin
7e0254b530
Drive-by fix "unused import" warning.
2017-07-05 13:58:06 +02:00
Matt Wismer
288143fadf
Correct bloom hash bitpacking documentation
...
The two 12 bit keys add to 24 bits, which leaves 8 bits free in each word. (And 8 * 3 = 24, to pack in the fourth hash.)
2017-06-22 21:26:14 -04:00
bors-servo
efed75ae5a
Auto merge of #17484 - canaltinova:upup, r=emilio
...
Bump cssparser version to 0.16.1 in toml files
<!-- 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
<!-- 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/17484 )
<!-- Reviewable:end -->
2017-06-22 16:52:00 -07:00
Nazım Can Altınova
5362c5ee74
Bump cssparser version to 0.16.1 in toml files
2017-06-22 15:44:03 -07:00
Bobby Holley
71e76a054d
Be smarter when clearing the bloom filter.
2017-06-21 19:53:16 -07:00
Bobby Holley
28c35ac9df
Improve bloom microbenchmarks.
...
The current code is mostly bechmarking Rust's default hash routines for
integers, which is not interesting to us. We add generating function
that jumps around "enough" and also add benchmarks for clear().
It's hard to read too much into the numbers because we can't reliably
simulate L1/L2 cache behavior with cargo bench, but the results show
about 40ns for clear() about 2ns for insert, and about 1.5ns for
contains/remove. This informs our thinking in the next patch.
2017-06-21 19:53:15 -07:00
Bobby Holley
5b857686e2
Make selectors benchmark tests work again.
2017-06-21 19:53:15 -07:00
Simon Sapin
7f4c846321
Less unsafe in selectors::builder.
...
MozReview-Commit-ID: 7IIyio8WAa7
2017-06-20 11:59:11 -07:00
Bobby Holley
1104cdc580
Invert the order of each compound selector.
...
MozReview-Commit-ID: JkBjqyYgbrB
2017-06-20 11:59:11 -07:00
Bobby Holley
1fc1d64e80
Hoist specificity computation into a new private builder module.
...
This patch doesn't modify any of the code because making a few things pub. I
did this first to make the next patch easier to audit.
MozReview-Commit-ID: 7PYxoS5bVGN
2017-06-20 11:59:11 -07:00
Bobby Holley
1d242ad760
Store selectors in matching order, rather than parse order.
...
We add a slow in-place reverse during parsing to achieve this for now, which
gets fixed up later on.
MozReview-Commit-ID: 42QkOzSgV3T
2017-06-20 11:59:10 -07:00
Bobby Holley
fac5aeb092
Stop creating unnecessarily-large SmallVecs for specific tasks.
...
MozReview-Commit-ID: IM9aAjSeJI9
2017-06-20 11:59:10 -07:00
Bobby Holley
db8f59407f
Hoist sink into selectors.
...
It probably makes more sense (eventually) to put it in SmallVec.
MozReview-Commit-ID: AIBKCLiMNN2
2017-06-20 11:59:10 -07:00
Bobby Holley
2159d48382
Stop using parse_compound_selector for negation parsing.
...
This makes the code easier to work with, and fixes a bug where we don't currently
reject pseudo-elements within :not().
MozReview-Commit-ID: Cgl9w0PBsN3
2017-06-20 11:59:09 -07:00
cku
727725ac3d
Stylo: Correct style match for element instances under a use-element tree.
2017-06-20 18:07:36 +08:00
Simon Sapin
316cd35767
Untry
2017-06-18 13:21:51 +02:00
Simon Sapin
b83afdedc8
Upgrade cssparser to 0.15
2017-06-16 15:05:46 +02:00
Bastien Orivel
76d8573393
Bump serde to 1.0
2017-06-16 13:31:18 +02:00
Nazım Can Altınova
57d02dc0e9
Handle PseudoElement case in :active and :hover quirk
2017-06-13 17:22:39 +03:00
Emilio Cobos Álvarez
4434509088
style: Add an AllLinksVisitedAndUnvisited for invalidation.
...
Otherwise, tests like the following fail, given we always match as unvisited,
and we'd never mark the link as needing invalidation.
<!doctype html>
<style>
a {
color: red !important;
}
.foo :visited {
color: green !important;
}
</style>
<div>
<a href="https://google.es ">visit me</a>
<button onclick="this.parentNode.className = 'foo'">Then click me</button>
</div>
Bug: 1368240
MozReview-Commit-ID: LDv6S28c4ju
2017-06-13 13:27:06 +02:00
Emilio Cobos Álvarez
151b636562
style: Add a way to match a single compound selector.
...
Also improve the ergonomics of matches_complex_selector.
Bug: 1368240
MozReview-Commit-ID: 9DWDvyZmetM
2017-06-13 10:58:47 +02:00
Simon Sapin
b82713924c
Pre-compute classes and IDs case-sensitivity
2017-06-13 00:36:12 +02:00
Simon Sapin
9316c41bf7
Make MatchingContext::quirks_mode field private, add read-only accessor.
2017-06-13 00:35:56 +02:00
Simon Sapin
700aaf2bd6
Move MatchingContext to a new module
2017-06-13 00:31:29 +02:00
Simon Sapin
c5c1c1b350
Classes/IDs case-sensitivity: get quirks mode from matching context.
2017-06-13 00:27:41 +02:00
Simon Sapin
5bccf98aa4
ID and class selectors are ASCII case-insensitive in quirks mode.
...
https://bugzilla.mozilla.org/show_bug.cgi?id=1363778
2017-06-12 23:33:53 +02:00
Bobby Holley
6e3e7b282c
Pack the fourth ancestor hash into the upper byte of the first three hashes.
...
MozReview-Commit-ID: KbtKQzLmwVO
2017-06-12 12:13:04 -07:00
Bobby Holley
cf982d17b9
Shift by KEY_SIZE instead of something larger.
...
Currently all Gecko and Servo do the KEY_SHIFT thing, but there's no reason
we need to follow that here.
See https://bugzilla.mozilla.org/show_bug.cgi?id=1371949#c10
MozReview-Commit-ID: CqNi7r9e5s0
2017-06-12 12:12:39 -07:00
Fernando Jiménez Moreno
2cc940384d
stylo: Implement GetSpecificity for ServoStyleRule
2017-06-12 14:40:16 +02:00
Nazım Can Altınova
15fe48f3f6
stylo: Support :hover and :active quirk
2017-06-10 22:18:32 +03:00
Josh Matthews
27ae1ef2e7
Thread ParseError return values through CSS parsing.
2017-06-09 16:46:25 -04:00
Boris Zbarsky
537cf52707
Fix revalidation selectors when pseudo-elements are involved.
2017-06-08 01:19:50 -04:00
J. Ryan Stinnett
2c8866e919
Stop looking for relevant links once found
...
Once we've encountered a relevant link, stop looking for potential relevant
link. A relevant link is only the nearest ancestor link, so it is incorrect to
keep looking once one is found. This only matters for the somewhat unusual case
of nested links.
MozReview-Commit-ID: LiXsUGWfxg3
2017-06-07 14:24:06 -05:00
J. Ryan Stinnett
6b1b8bbee8
Log element during selector matching
...
MozReview-Commit-ID: D8eFyRCy5BR
2017-06-07 14:23:53 -05:00
Fernando Jiménez Moreno
36f3255484
Bug 1367615 - Stylo: implement inIDOMUtils.getSelectorCount and inIDOMUtils.getSelectorTextFromIndex
2017-06-07 17:42:29 +02:00
Bobby Holley
586a21e1dd
Make a bunch of types 'static.
...
The reasoning for this is explained in a comment in the next patch.
MozReview-Commit-ID: FQgDY77mg3B
2017-06-06 19:09:16 -07:00
Simon Sapin
008e733df6
Fix some "unused" warnings
2017-06-06 16:58:35 +02:00
Bobby Holley
f105d3438d
Fix up unit tests.
...
MozReview-Commit-ID: 9eyOhoQ02qX
2017-06-05 19:44:13 -07:00
Bobby Holley
442211723c
Eliminate redundant parse_selector.
...
MozReview-Commit-ID: 6eBVgT9ri5Q
2017-06-05 19:44:12 -07:00
Bobby Holley
27568de567
Use ThinArc in Selector.
...
MozReview-Commit-ID: Axvq0rbqA7Y
2017-06-05 19:44:10 -07:00
Bobby Holley
e8a56e969f
Make ParseVec bigger.
...
MozReview-Commit-ID: DszMC031Xlj
2017-06-05 19:44:08 -07:00
Bobby Holley
852efb825f
Use dynamically-sized Arcs for Selector.
...
MozReview-Commit-ID: hq0jYrx8Sg
2017-06-05 19:44:06 -07:00
Bobby Holley
992059c856
Move around specificity computation so that we know it by the time we mint the Selector.
...
This is important to make the selector immutable, which needs to happen when we stick it in an Arc.
MozReview-Commit-ID: BaMbOEbYC3D
2017-06-05 19:44:02 -07:00
Bobby Holley
1281fd9353
Stop slicing selectors when noting dependencies, and match with an offset instead.
...
MozReview-Commit-ID: KLqmdRKygO0
2017-06-05 19:44:01 -07:00
Bobby Holley
5ddabef636
Collapse Selector, SelectorInner, and ComplexSelector into a single Selector.
...
The refcounting is still internal. We'll fix that up next.
MozReview-Commit-ID: CTxZNaR3Qgj
2017-06-05 19:44:00 -07:00
Bobby Holley
713c9a63f6
Move the ancestor hashes out of Selector.
...
MozReview-Commit-ID: 5mipXnjgSED
2017-06-05 19:43:58 -07:00