aboutsummaryrefslogtreecommitdiffstats
path: root/ports/geckolib/error_reporter.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2017-08-28 17:21:07 -0700
committerJosh Matthews <josh@joshmatthews.net>2017-08-28 17:21:07 -0700
commit9a7cceb0a1eafb28607e1f7a7773bf342108a8b9 (patch)
treebc1446530cde40ad03a7432338c199fdc01ad13f /ports/geckolib/error_reporter.rs
parent408c34a76d8c86297a7f0bec9d58b36362b22282 (diff)
downloadservo-9a7cceb0a1eafb28607e1f7a7773bf342108a8b9.tar.gz
servo-9a7cceb0a1eafb28607e1f7a7773bf342108a8b9.zip
Report invalid selectors (bug 1384216).
Diffstat (limited to 'ports/geckolib/error_reporter.rs')
-rw-r--r--ports/geckolib/error_reporter.rs24
1 files changed, 22 insertions, 2 deletions
diff --git a/ports/geckolib/error_reporter.rs b/ports/geckolib/error_reporter.rs
index 0518750271b..1f2c683aca3 100644
--- a/ports/geckolib/error_reporter.rs
+++ b/ports/geckolib/error_reporter.rs
@@ -161,7 +161,7 @@ fn token_to_str<'a>(t: Token<'a>) -> String {
format!("{}{}", i, escape_css_ident(&*unit)),
Token::Dimension { value, ref unit, .. } =>
format!("{}{}", value, escape_css_ident(&*unit)),
- Token::WhiteSpace(_) => "whitespace".into(),
+ Token::WhiteSpace(s) => s.into(),
Token::Comment(_) => "comment".into(),
Token::Colon => ":".into(),
Token::Semicolon => ";".into(),
@@ -251,7 +251,11 @@ fn extract_error_params<'a>(err: ParseError<'a>) -> Option<ErrorParams<'a>> {
CssParseError::Custom(SelectorParseError::BadValueInAttr(t)) |
CssParseError::Custom(SelectorParseError::ExpectedBarInAttr(t)) |
CssParseError::Custom(SelectorParseError::NoQualifiedNameInAttributeSelector(t)) |
- CssParseError::Custom(SelectorParseError::InvalidQualNameInAttr(t)) =>
+ CssParseError::Custom(SelectorParseError::InvalidQualNameInAttr(t)) |
+ CssParseError::Custom(SelectorParseError::ExplicitNamespaceUnexpectedToken(t)) |
+ CssParseError::Custom(SelectorParseError::PseudoElementExpectedIdent(t)) |
+ CssParseError::Custom(SelectorParseError::NoIdentForPseudo(t)) |
+ CssParseError::Custom(SelectorParseError::PseudoElementExpectedColon(t)) =>
(None, Some(ErrorString::UnexpectedToken(t))),
CssParseError::Custom(SelectorParseError::ExpectedNamespace(namespace)) =>
@@ -260,6 +264,10 @@ fn extract_error_params<'a>(err: ParseError<'a>) -> Option<ErrorParams<'a>> {
CssParseError::Custom(SelectorParseError::UnsupportedPseudoClassOrElement(p)) =>
(None, Some(ErrorString::Ident(p))),
+ CssParseError::Custom(SelectorParseError::EmptySelector) |
+ CssParseError::Custom(SelectorParseError::DanglingCombinator) =>
+ (None, None),
+
err => match extract_error_param(err) {
Some(e) => (Some(e), None),
None => return None,
@@ -344,10 +352,22 @@ impl<'a> ErrorHelpers<'a> for ContextualParseError<'a> {
Some(&b"PEAttributeNameOrNamespaceExpected\0"[..]),
CssParseError::Custom(SelectorParseError::InvalidQualNameInAttr(_)) =>
Some(&b"PEAttributeNameExpected\0"[..]),
+ CssParseError::Custom(SelectorParseError::ExplicitNamespaceUnexpectedToken(_)) =>
+ Some(&b"PETypeSelNotType\0"[..]),
CssParseError::Custom(SelectorParseError::ExpectedNamespace(_)) =>
Some(&b"PEUnknownNamespacePrefix\0"[..]),
+ CssParseError::Custom(SelectorParseError::EmptySelector) =>
+ Some(&b"PESelectorGroupNoSelector\0"[..]),
+ CssParseError::Custom(SelectorParseError::DanglingCombinator) =>
+ Some(&b"PESelectorGroupExtraCombinator\0"[..]),
CssParseError::Custom(SelectorParseError::UnsupportedPseudoClassOrElement(_)) =>
Some(&b"PEPseudoSelUnknown\0"[..]),
+ CssParseError::Custom(SelectorParseError::PseudoElementExpectedColon(_)) =>
+ Some(&b"PEPseudoSelEndOrUserActionPC\0"[..]),
+ CssParseError::Custom(SelectorParseError::NoIdentForPseudo(_)) =>
+ Some(&b"PEPseudoClassArgNotIdent\0"[..]),
+ CssParseError::Custom(SelectorParseError::PseudoElementExpectedIdent(_)) =>
+ Some(&b"PEPseudoSelBadName\0"[..]),
_ => None,
};
return (prefix, b"PEBadSelectorRSIgnored\0", Action::Nothing);