Test variation font ranges in the CSS Font Loading API
https://bugs.webkit.org/show_bug.cgi?id=170022
Reviewed by Dean Jackson.
Source/WebCore:
Test: fast/text/variations/font-loading-api-parse-ranges.html
Don't use keywords when reporting font variation range values.
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::fontNonKeywordWeightFromStyleValue):
(WebCore::ComputedStyleExtractor::fontWeightFromStyleValue):
(WebCore::ComputedStyleExtractor::fontNonKeywordStretchFromStyleValue):
(WebCore::ComputedStyleExtractor::fontStretchFromStyleValue):
(WebCore::ComputedStyleExtractor::fontNonKeywordStyleFromStyleValue):
(WebCore::ComputedStyleExtractor::fontStyleFromStyleValue):
* css/CSSComputedStyleDeclaration.h:
* css/FontFace.cpp:
(WebCore::FontFace::style):
(WebCore::FontFace::weight):
(WebCore::FontFace::stretch):
LayoutTests:
* fast/text/variations/font-loading-api-parse-ranges-expected.txt: Added.
* fast/text/variations/font-loading-api-parse-ranges.html: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@214433 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/css/FontFace.cpp b/Source/WebCore/css/FontFace.cpp
index a1efd6b..7931a4d 100644
--- a/Source/WebCore/css/FontFace.cpp
+++ b/Source/WebCore/css/FontFace.cpp
@@ -294,17 +294,21 @@
if (minimum.get().equals(maximum.get()))
return minimum->cssText();
- ASSERT(minimum->fontStyleValue->valueID() == CSSValueOblique);
- ASSERT(maximum->fontStyleValue->valueID() == CSSValueOblique);
+ auto minimumNonKeyword = ComputedStyleExtractor::fontNonKeywordStyleFromStyleValue(style.minimum);
+ auto maximumNonKeyword = ComputedStyleExtractor::fontNonKeywordStyleFromStyleValue(style.maximum);
+
+ ASSERT(minimumNonKeyword->fontStyleValue->valueID() == CSSValueOblique);
+ ASSERT(maximumNonKeyword->fontStyleValue->valueID() == CSSValueOblique);
StringBuilder builder;
- builder.append(minimum->fontStyleValue->cssText());
+ builder.append(minimumNonKeyword->fontStyleValue->cssText());
builder.append(' ');
if (minimum->obliqueValue.get() == maximum->obliqueValue.get())
- builder.append(minimum->obliqueValue->cssText());
+ builder.append(minimumNonKeyword->obliqueValue->cssText());
else {
- builder.append(minimum->obliqueValue->cssText());
- builder.append(maximum->obliqueValue->cssText());
+ builder.append(minimumNonKeyword->obliqueValue->cssText());
+ builder.append(' ');
+ builder.append(maximumNonKeyword->obliqueValue->cssText());
}
return builder.toString();
}
@@ -320,10 +324,13 @@
if (minimum.get().equals(maximum.get()))
return minimum->cssText();
+ auto minimumNonKeyword = ComputedStyleExtractor::fontNonKeywordWeightFromStyleValue(weight.minimum);
+ auto maximumNonKeyword = ComputedStyleExtractor::fontNonKeywordWeightFromStyleValue(weight.maximum);
+
StringBuilder builder;
- builder.append(minimum->cssText());
+ builder.append(minimumNonKeyword->cssText());
builder.append(' ');
- builder.append(maximum->cssText());
+ builder.append(maximumNonKeyword->cssText());
return builder.toString();
}
@@ -338,10 +345,13 @@
if (minimum.get().equals(maximum.get()))
return minimum->cssText();
+ auto minimumNonKeyword = ComputedStyleExtractor::fontNonKeywordStretchFromStyleValue(stretch.minimum);
+ auto maximumNonKeyword = ComputedStyleExtractor::fontNonKeywordStretchFromStyleValue(stretch.maximum);
+
StringBuilder builder;
- builder.append(minimum->cssText());
+ builder.append(minimumNonKeyword->cssText());
builder.append(' ');
- builder.append(maximum->cssText());
+ builder.append(maximumNonKeyword->cssText());
return builder.toString();
}