diff --git a/servo/components/style/queries/feature_expression.rs b/servo/components/style/queries/feature_expression.rs index 91e1d1572cbd3682ec977f21751e067968ed8884..6e618ac765f698bf3d9ce120167a6906ae3ce5ff 100644 --- a/servo/components/style/queries/feature_expression.rs +++ b/servo/components/style/queries/feature_expression.rs @@ -11,7 +11,7 @@ use crate::parser::{Parse, ParserContext}; use crate::str::{starts_with_ignore_ascii_case, string_as_ascii_lowercase}; use crate::values::computed::{self, Ratio, ToComputedValue}; use crate::values::specified::{Integer, Length, Number, Resolution}; -use crate::values::CSSFloat; +use crate::values::{AtomString, CSSFloat}; use crate::{Atom, Zero}; use cssparser::{Parser, Token}; use selectors::kleene_value::KleeneValue; @@ -639,6 +639,10 @@ impl QueryFeatureExpression { .map(|v| *expect!(Enumerated, v)); return evaluator(context, computed); }, + Evaluator::String(evaluator) => { + let string = self.kind.non_ranged_value().map(|v| expect!(String, v)); + return evaluator(context, string); + }, Evaluator::BoolInteger(eval) => { let computed = self .kind @@ -677,6 +681,7 @@ pub enum QueryExpressionValue { /// An enumerated value, defined by the variant keyword table in the /// feature's `mData` member. Enumerated(KeywordDiscriminant), + String(AtomString), } impl QueryExpressionValue { @@ -695,6 +700,7 @@ impl QueryExpressionValue { Evaluator::Enumerated { serializer, .. } => dest.write_str(&*serializer(value)), _ => unreachable!(), }, + QueryExpressionValue::String(ref s) => s.to_css(dest), } } @@ -732,6 +738,9 @@ impl QueryExpressionValue { Evaluator::Resolution(..) => { QueryExpressionValue::Resolution(Resolution::parse(context, input)?) }, + Evaluator::String(..) => { + QueryExpressionValue::String(input.expect_string()?.as_ref().into()) + }, Evaluator::Enumerated { parser, .. } => { QueryExpressionValue::Enumerated(parser(context, input)?) },