diff options
author | Emilio Cobos Álvarez <emilio@crisal.io> | 2018-09-02 22:54:57 +0000 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2018-09-03 12:36:41 +0200 |
commit | d56e53788283738c6d40cd9ba68c26621b983bef (patch) | |
tree | a3def3fb27168be1b246754ffa81d3ca4dffbab2 | |
parent | 40d2cbe8edb4894c29efb83d864cedc4ca401450 (diff) | |
download | servo-d56e53788283738c6d40cd9ba68c26621b983bef.tar.gz servo-d56e53788283738c6d40cd9ba68c26621b983bef.zip |
style: Use proper escaping for pseudo-class strings.
We always serialize as an atom, which is the previous behavior (though previous
code was using string escaping which I think was not totally sound either...).
Differential Revision: https://phabricator.services.mozilla.com/D4753
-rw-r--r-- | components/style/gecko/selector_parser.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/components/style/gecko/selector_parser.rs b/components/style/gecko/selector_parser.rs index dcdb06e466a..32a7b1f6ad0 100644 --- a/components/style/gecko/selector_parser.rs +++ b/components/style/gecko/selector_parser.rs @@ -21,6 +21,7 @@ use str::starts_with_ignore_ascii_case; use string_cache::{Atom, Namespace, WeakAtom, WeakNamespace}; use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss as ToCss_}; use thin_slice::ThinBoxedSlice; +use values::serialize_atom_identifier; pub use gecko::pseudo_element::{PseudoElement, EAGER_PSEUDOS, EAGER_PSEUDO_COUNT, PSEUDO_COUNT}; pub use gecko::snapshot::SnapshotMap; @@ -78,7 +79,9 @@ impl ToCss for NonTSPseudoClass { match *self { $(NonTSPseudoClass::$name => concat!(":", $css),)* $(NonTSPseudoClass::$s_name(ref s) => { - return write!(dest, concat!(":", $s_css, "({})"), s) + write!(dest, concat!(":", $s_css, "("))?; + serialize_atom_identifier(s, dest)?; + return dest.write_char(')'); }, )* NonTSPseudoClass::MozLocaleDir(ref dir) => { dest.write_str(":-moz-locale-dir(")?; @@ -99,7 +102,7 @@ impl ToCss for NonTSPseudoClass { dest.write_str(", ")?; selector.to_css(dest)?; } - return dest.write_str(")") + return dest.write_char(')') } } } |