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
This commit is contained in:
Emilio Cobos Álvarez 2017-06-09 17:11:19 +02:00
parent fdf9093466
commit 4434509088
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
6 changed files with 42 additions and 2 deletions

View file

@ -991,6 +991,10 @@ pub trait MatchMethods : TElement {
&context.shared.guards);
let rules_changed = match visited_handling {
VisitedHandlingMode::AllLinksVisitedAndUnvisited => {
unreachable!("We should never try to selector match with \
AllLinksVisitedAndUnvisited");
},
VisitedHandlingMode::AllLinksUnvisited => {
data.set_primary_rules(rules)
},
@ -1070,6 +1074,10 @@ pub trait MatchMethods : TElement {
);
let rules_changed = match visited_handling {
VisitedHandlingMode::AllLinksVisitedAndUnvisited => {
unreachable!("We should never try to selector match with \
AllLinksVisitedAndUnvisited");
},
VisitedHandlingMode::AllLinksUnvisited => {
data.set_primary_rules(primary_rule_node)
},