diff --git a/src/adapt/cssvalid.js b/src/adapt/cssvalid.js index 8f14a5c9c..7236d09f4 100644 --- a/src/adapt/cssvalid.js +++ b/src/adapt/cssvalid.js @@ -604,7 +604,12 @@ adapt.cssvalid.PrimitiveValidator.prototype.visitFunc = func => null; /** * @override */ -adapt.cssvalid.PrimitiveValidator.prototype.visitExpr = expr => expr; // null; +adapt.cssvalid.PrimitiveValidator.prototype.visitExpr = function(expr) { + if (this.allowed & 0x7FE) { // ALLOW_STR|ALLOW_IDENT|...|ALLOW_ZERO_PERCENT + return expr; + } + return null; +}; /** * @param {adapt.cssvalid.PrimitiveValidator} other diff --git a/src/adapt/vtree.js b/src/adapt/vtree.js index 00adc96b3..9efb0c39e 100644 --- a/src/adapt/vtree.js +++ b/src/adapt/vtree.js @@ -1638,8 +1638,13 @@ adapt.vtree.ContentPropertyHandler.prototype.visitSpaceList = function(list) { /** @override */ adapt.vtree.ContentPropertyHandler.prototype.visitExpr = function(expr) { const ex = expr.toExpr(); - const val = ex.evaluate(this.context); + let val = ex.evaluate(this.context); if (typeof val === "string") { + if (ex instanceof adapt.expr.Named) { + // For env(pub-title) and env(doc-title) + // Need to unquote the result. To be consistent with cssparse.evaluateExprToCSS() + val = adapt.cssparse.parseValue(ex.scope, new adapt.csstok.Tokenizer(val, null), "").stringValue(); + } goog.asserts.assert(this.elem.ownerDocument); const node = this.exprContentListener(ex, val, this.elem.ownerDocument); this.visitStrInner(val, node);