mirror of
https://github.com/servo/servo.git
synced 2025-06-18 13:24:29 +00:00
Bug 1364412: Properly reject to parse pseudo-element states that don't support state. r=bholley
MozReview-Commit-ID: KQCFPtOTGQI Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
This commit is contained in:
parent
1e0edf4909
commit
fe8da51fee
1 changed files with 16 additions and 12 deletions
|
@ -319,22 +319,26 @@ impl<'a> ::selectors::Parser for SelectorParser<'a> {
|
||||||
None => return Err(()),
|
None => return Err(()),
|
||||||
};
|
};
|
||||||
|
|
||||||
let state = input.try(|input| {
|
let state = if pseudo.supports_user_action_state() {
|
||||||
let mut state = ElementState::empty();
|
input.try(|input| {
|
||||||
|
let mut state = ElementState::empty();
|
||||||
|
|
||||||
while !input.is_exhausted() {
|
while !input.is_exhausted() {
|
||||||
input.expect_colon()?;
|
input.expect_colon()?;
|
||||||
let ident = input.expect_ident()?;
|
let ident = input.expect_ident()?;
|
||||||
let pseudo_class = self.parse_non_ts_pseudo_class(ident)?;
|
let pseudo_class = self.parse_non_ts_pseudo_class(ident)?;
|
||||||
|
|
||||||
if !pseudo_class.is_safe_user_action_state() {
|
if !pseudo_class.is_safe_user_action_state() {
|
||||||
return Err(())
|
return Err(())
|
||||||
|
}
|
||||||
|
state.insert(pseudo_class.state_flag());
|
||||||
}
|
}
|
||||||
state.insert(pseudo_class.state_flag());
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(state)
|
Ok(state)
|
||||||
});
|
}).ok()
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
};
|
||||||
|
|
||||||
Ok(PseudoElementSelector {
|
Ok(PseudoElementSelector {
|
||||||
pseudo: pseudo,
|
pseudo: pseudo,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue