mirror of
https://github.com/servo/servo.git
synced 2025-06-17 21:04:28 +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(()),
|
||||
};
|
||||
|
||||
let state = input.try(|input| {
|
||||
let mut state = ElementState::empty();
|
||||
let state = if pseudo.supports_user_action_state() {
|
||||
input.try(|input| {
|
||||
let mut state = ElementState::empty();
|
||||
|
||||
while !input.is_exhausted() {
|
||||
input.expect_colon()?;
|
||||
let ident = input.expect_ident()?;
|
||||
let pseudo_class = self.parse_non_ts_pseudo_class(ident)?;
|
||||
while !input.is_exhausted() {
|
||||
input.expect_colon()?;
|
||||
let ident = input.expect_ident()?;
|
||||
let pseudo_class = self.parse_non_ts_pseudo_class(ident)?;
|
||||
|
||||
if !pseudo_class.is_safe_user_action_state() {
|
||||
return Err(())
|
||||
if !pseudo_class.is_safe_user_action_state() {
|
||||
return Err(())
|
||||
}
|
||||
state.insert(pseudo_class.state_flag());
|
||||
}
|
||||
state.insert(pseudo_class.state_flag());
|
||||
}
|
||||
|
||||
Ok(state)
|
||||
});
|
||||
Ok(state)
|
||||
}).ok()
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
Ok(PseudoElementSelector {
|
||||
pseudo: pseudo,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue