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();
 }