cku
727725ac3d
Stylo: Correct style match for element instances under a use-element tree.
2017-06-20 18:07:36 +08: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
Nazım Can Altınova
15fe48f3f6
stylo: Support :hover and :active quirk
2017-06-10 22:18:32 +03: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
Simon Sapin
008e733df6
Fix some "unused" warnings
2017-06-06 16:58:35 +02: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
Boris Zbarsky
4c320a9c75
Allow inserting elements into the style sharing cache even when they are affected by id selectors.
2017-06-05 13:32:05 -04:00
Bobby Holley
47404cfc4e
Compare style attributes rather than rejecting them from the cache.
...
MozReview-Commit-ID: Jmu7Pie2mBP
2017-05-31 06:48:40 -07:00
J. Ryan Stinnett
a7882cfeb9
Match and cascade visited styles
...
To support visited styles, we match and cascade a separate set of styles any
time we notice that an element has a relevant link.
The visited rules and values are held in `ComputedStyle` alongside the
regular rules and values, which simplifies supporting various APIs like
`cascade_primary_and_pseudos` which expect easy access to previously matched
rules.
To simplify passing the additional values around, an additional reference to the
visited `ComputedValues` is placed inside the regular `ComputedValues`.
MozReview-Commit-ID: 2ebbjcfkfWf
2017-05-24 18:07:44 -05:00
J. Ryan Stinnett
e3a256803d
Look for relevant links while matching
...
Adjust the matching process to look for a "relevant link" while matching. A
"relevant link" is the element being matched if it is a link or the nearest
ancestor link.
Matching for links now depends on the `VisitedHandlingMode`, which determines
whether all links match as if they are unvisited (the default) or if the
relevant link matches as visited (and all others remain unvisited).
If a relevant link is ever found for any selector, track this as part of the
`MatchingContext` object. This is used in the next patch to determine if an
additional match and cascade should be performed to compute the styles when
visited.
MozReview-Commit-ID: 3xUbRo7vpuD
2017-05-24 18:07:24 -05:00
Simon Sapin
c06e574c18
Short-circuit and unindent
2017-05-18 17:13:19 +02:00
Simon Sapin
76166bce58
Add more enum types to avoid unreachable!() for selector case-sensitivity
2017-05-18 17:13:19 +02:00
Simon Sapin
94b4a32c18
Make some attr values case-insensitive in selectors
...
https://bugzilla.mozilla.org/show_bug.cgi?id=1363531
2017-05-18 17:13:15 +02:00
Simon Sapin
9376abdd2c
Shrink selectors::Component, add case-insensitive for other attr selectors
...
* https://bugzilla.mozilla.org/show_bug.cgi?id=1364148
* https://bugzilla.mozilla.org/show_bug.cgi?id=1364162
2017-05-18 17:13:14 +02:00
Simon Sapin
83c7824fda
Simplify rust-selectors API for attribute selectors
2017-05-18 17:13:13 +02:00
Simon Sapin
0b1e51de53
Rename CaseSensitivity::CaseInsensitive to AsciiCaseInsensitive
2017-05-18 17:13:11 +02:00
Emilio Cobos Álvarez
522f8489d6
Bug 1364850: Move PseudoElement to be just another combinator in selectors. r=bholley
...
MozReview-Commit-ID: 8OoOIodkKJ5
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-05-17 10:58:24 +02:00
bors-servo
c962458984
Auto merge of #16890 - servo:qname, r=emilio
...
Fix serialization of namespace and universal selectors
Fix #16017
Fix #16020
<!-- 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/16890 )
<!-- Reviewable:end -->
2017-05-16 20:03:53 -05:00
Simon Sapin
390e688058
Fix serialization of namespace and universal selectors
...
Fix #16017
Fix #16020
2017-05-16 16:44:28 +02:00
J. Ryan Stinnett
e385b81fc3
Create a MatchingContext to group related matching args
...
MozReview-Commit-ID: 7XZTn7HDXrm
2017-05-16 09:19:28 -05:00
Hiroyuki Ikezoe
1a37e69ce9
Fix overflow in ::nth-child()
2017-04-26 19:20:13 +09:00
Bobby Holley
a1e90d1b24
Downgrade selectors not() behavior to level 3.
...
MozReview-Commit-ID: 6p750Ml2wzm
2017-04-25 15:43:20 -07:00
Bobby Holley
e4ed69c52b
Reorganize bits and make the flags usize.
...
These are never stored persistently anywhere, and I'm pretty sure it's slower
for the compiler/CPU to operate on non-word-sized flags.
MozReview-Commit-ID: LQNsJbUsw85
2017-04-23 12:41:27 -07:00
Bobby Holley
60f846b2ca
Remove unused StyleRelations.
...
MozReview-Commit-ID: ed0NiuY9Ek
2017-04-23 12:41:21 -07:00
Bobby Holley
cebacc7faa
Rename SimpleSelector to Component.
...
MozReview-Commit-ID: JfaZpHSkG8h
2017-04-20 15:04:48 -07:00
Bobby Holley
6d66ec5e11
Store selectors and combinators inline in a single sequence.
...
This improves cache locality and reduces allocations during parsing.
Note that this reverses the iteration order within a sequence of simple selectors,
but that shouldn't matter.
2017-04-20 15:00:43 -07:00
Bobby Holley
69e3870cdd
Store bloom filter hashes inline.
...
MozReview-Commit-ID: F07JkdduLaI
2017-04-18 20:07:55 -07:00
Bobby Holley
9524c5cb57
Introduce SelectorInner and use it for top-level matching.
...
MozReview-Commit-ID: DxG6USsPIkh
2017-04-18 20:07:53 -07:00
Bobby Holley
11745fb983
Eliminate the AFFECTED_BY_SIBLINGS StyleRelation.
...
MozReview-Commit-ID: Lm25v2K21v5
2017-04-18 15:59:14 -07:00
Bobby Holley
f13ed246fd
Use the bloom filter for child selectors.
...
This speeds up bloom-basic-ref.html by 4x on my machine.
2017-04-14 22:56:10 +08:00
Emilio Cobos Álvarez
96ee4c7c66
selectors: Remove unused AFFECTED_BY_ATTRIBUTE_SELECTORS.
2017-04-09 18:15:55 +08:00
Emilio Cobos Álvarez
1748150497
selectors: Remove custom attribute-affecting logic and sibling-affecting logic from rust-selectors.
...
MozReview-Commit-ID: BjZY6TjJbcb
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-04-09 05:49:47 +02:00
Emilio Cobos Álvarez
e29b84de18
style: Hash less stuff in the bloom filter, using the precomputed hashes we have.
2017-04-08 02:02:11 +02:00
Emilio Cobos Álvarez
a9b133bcbb
Bug 1345950: stylo: Fix slow selector flags. r=bholley
...
MozReview-Commit-ID: QwuSxulNG0
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-03-22 11:21:24 +01:00
Emilio Cobos Álvarez
2772419ad8
selectors: Check the bloom filter at most once per complex selector.
...
Fixes https://github.com/servo/rust-selectors/issues/107
2017-03-20 12:09:34 +01:00
Matt Brubeck
2872c8bfab
Bug 1340683 - stylo: Implement the :-moz-any pseudo-class
2017-03-16 11:44:47 -07:00
Bobby Holley
9e860df9df
Bug 1336646 - Apply selector flags during traversal. r=emilio
2017-02-08 19:21:05 -08:00
Bobby Holley
a69eed6956
Fixes to pass tidy.
2017-02-07 23:01:06 -08:00
Bobby Holley
8915e53cee
Move rust-selectors in-tree.
2017-02-07 22:53:10 -08:00