Xidorn Quan
ab46a0bbe0
Add support for :scope pseudo-class
2017-10-09 22:04:08 +11:00
Bobby Holley
438740b912
Implement an nth-index cache.
...
MozReview-Commit-ID: Ee0um3QXkxl
2017-09-21 15:25:38 -07:00
Bobby Holley
ab9edf3d69
Hoist index computation into a helper.
...
MozReview-Commit-ID: ALeggMDh92m
2017-09-20 23:22:44 -07:00
Bobby Holley
48466bf876
Introduce an NthIndexCache type and pipe it from ThreadLocalStyleContext to MatchingContext.
...
Some future refactoring here to pass fewer things as parameters would be nice.
2017-09-20 23:22:38 -07:00
Ting-Yu Lin
a23596d377
Improve debug log related to selector matching
...
Move debug log in matches_complex_selector_internal to the front so that the
entire complex selector can be printed.
MozReview-Commit-ID: KXBDpbzBv0I
2017-08-24 17:05:35 +08:00
Clément DAVID
c5fe235112
order derivable traits lists
...
Ignoring :
- **generated**.rs
- python/tidy/servo_tidy_tests/rust_tidy.rs
2017-08-23 21:38:44 +02:00
Ting-Yu Lin
0e82ca1d3a
style: Skip matching :nth-child if element is the root of anonymous subtree
...
This implement the logic in Gecko's nsNthIndexCache::GetNthIndex().
MozReview-Commit-ID: 8lzK9iIbfzo
2017-08-16 14:25:01 +08:00
Simon Sapin
b5a4b8d6a0
Upgrade to rustc 1.21.0-nightly (13d94d5fa 2017-08-10)
2017-08-15 14:10:44 +02:00
Emilio Cobos Álvarez
a885655210
selectors: Fix note_next_sequence.
...
Selector-matching can backtrack when looking for ancestor combinators, so we
can't just arrive there once and forget.
Also, there was a further problem before this patch, which was that
note_next_sequence was called _before_ checking whether all simple selectors
matched, so the sequence you could get there is just wrong.
Bug: 1384020
Reviewed-by: canaltinova
MozReview-Commit-ID: 6g0ibb8EfBU
2017-07-26 00:28:11 +02:00
Emilio Cobos Álvarez
dee4aea264
style: Remove hashes from style rules and dependencies.
...
Dependencies are very numerous, and now we shouldn't be getting so many of them.
Style rules just don't need them, so it's a waste of memory.
2017-07-13 05:44:53 +02:00
Emilio Cobos Álvarez
6d6c80e79b
style: Remove StyleRelations.
...
They're unused now. We can add them back if needed.
MozReview-Commit-ID: 92Y2Na0ZbVn
2017-07-12 09:26:55 +02:00
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
Bobby Holley
1104cdc580
Invert the order of each compound selector.
...
MozReview-Commit-ID: JkBjqyYgbrB
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
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