Commit b4835039 authored by Chris Nardi's avatar Chris Nardi Committed by Commit Bot

Support calc() in font-feature-settings

font-feature-settings accepts an integer, but the code for parsing that
integer did not check for calc() values. Update the code to accept
calculated integers.

Bug: 397061
Change-Id: I33ed1538f8148257f22a3e67cbd3478e523a1ff5
Reviewed-on: https://chromium-review.googlesource.com/888161Reviewed-by: default avatarEric Willigers <ericwilligers@chromium.org>
Commit-Queue: Chris Nardi <cnardi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#532158}
parent 83825ba8
<!doctype html>
<meta charset="utf-8">
<title>CSS Test: calc() function in font-feature-settings</title>
<link rel="author" title="Chris Nardi" href="mailto:cnardi@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-values/#funcdef-calc">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
#test {
font-feature-settings: "vert" calc(2);
}
</style>
<div id="test"></div>
<script>
const div = document.querySelector("#test");
// Chrome serializes font-feature-settings with single quotes vs. double quotes
// in other browsers, but that's not the issue being tested.
const expected = ["'vert' 2", "\"vert\" 2"];
test(function() {
assert_in_array(getComputedStyle(div).fontFeatureSettings, expected);
}, "calc() in font-feature-settings");
</script>
\ No newline at end of file
...@@ -1605,12 +1605,9 @@ cssvalue::CSSFontFeatureValue* ConsumeFontFeatureTag( ...@@ -1605,12 +1605,9 @@ cssvalue::CSSFontFeatureValue* ConsumeFontFeatureTag(
int tag_value = 1; int tag_value = 1;
// Feature tag values could follow: <integer> | on | off // Feature tag values could follow: <integer> | on | off
if (range.Peek().GetType() == kNumberToken && if (CSSPrimitiveValue* value =
range.Peek().GetNumericValueType() == kIntegerValueType && CSSPropertyParserHelpers::ConsumeInteger(range, 0)) {
range.Peek().NumericValue() >= 0) { tag_value = clampTo<int>(value->GetDoubleValue());
tag_value = clampTo<int>(range.ConsumeIncludingWhitespace().NumericValue());
if (tag_value < 0)
return nullptr;
} else if (range.Peek().Id() == CSSValueOn || } else if (range.Peek().Id() == CSSValueOn ||
range.Peek().Id() == CSSValueOff) { range.Peek().Id() == CSSValueOff) {
tag_value = range.ConsumeIncludingWhitespace().Id() == CSSValueOn; tag_value = range.ConsumeIncludingWhitespace().Id() == CSSValueOn;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment