getComputedStyle for line-height: normal should return the keyword instead of a length
authorjh718.park@samsung.com <jh718.park@samsung.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 10 Sep 2019 01:57:23 +0000 (01:57 +0000)
committerjh718.park@samsung.com <jh718.park@samsung.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 10 Sep 2019 01:57:23 +0000 (01:57 +0000)
https://bugs.webkit.org/show_bug.cgi?id=201296

LayoutTests/imported/w3c:

Reviewed by Ryosuke Niwa.

Per https://github.com/w3c/csswg-drafts/issues/3749,
Gecko and Blink has this behavior already.

This patch makes WebKit has the same behavior with them.

* web-platform-tests/css/css-inline/parsing/line-height-computed-expected.txt: Added.
* web-platform-tests/css/css-inline/parsing/line-height-computed.html: Added.
* web-platform-tests/css/cssom/getComputedStyle-line-height-expected.txt: Added.
* web-platform-tests/css/cssom/getComputedStyle-line-height.html: Added.
* web-platform-tests/html/rendering/replaced-elements/the-select-element/select-1-line-height-expected.html: Added.
* web-platform-tests/html/rendering/replaced-elements/the-select-element/select-1-line-height.html: Added.

Source/WebCore:

Reviewed by Ryosuke Niwa.

Per https://github.com/w3c/csswg-drafts/issues/3749,
Gecko and Blink has this behavior already.

This patch makes WebKit has the same behavior with them.

Tests: imported/w3c/web-platform-tests/css/css-inline/parsing/line-height-computed.html
       imported/w3c/web-platform-tests/css/cssom/getComputedStyle-line-height.html
       imported/w3c/web-platform-tests/html/rendering/replaced-elements/the-select-element/select-1-line-height.html

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::lineHeightFromStyle):

LayoutTests:

Reviewed by Ryosuke Niwa.

Per https://github.com/w3c/csswg-drafts/issues/3749,
Gecko and Blink has this behavior already.

This patch makes WebKit has the same behavior with them.

* css3/calc/line-height-expected.txt:
* fast/css/font-calculated-value-expected.txt:
* fast/css/font-calculated-value.html:
* fast/css/font-shorthand-from-longhands-expected.txt:
* fast/css/font-shorthand-from-longhands.html:
* fast/css/font-shorthand-line-height-expected.txt:
* fast/css/font-shorthand-line-height.html:
* fast/css/getComputedStyle/computed-style-expected.txt:
* fast/css/getComputedStyle/computed-style-font-expected.txt:
* fast/css/getComputedStyle/computed-style-font.html:
* fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
* fast/ruby/ruby-line-height-expected.txt:
* fast/ruby/ruby-line-height.html:
* fast/text-autosizing/ios/idempotentmode/line-height-boosting-expected.txt:
* fast/text-autosizing/ios/idempotentmode/line-height-boosting.html:
* fast/text-autosizing/ios/line-height-text-autosizing-expected.txt:
* fast/text-autosizing/ios/line-height-text-autosizing.html:
* media/track/track-cue-rendering-on-resize-expected.txt:
* media/track/track-cue-rendering-on-resize.html:
* platform/gtk/fast/css/css2-system-fonts-expected.txt:
* platform/gtk/fast/css/getComputedStyle/computed-style-expected.txt:
* platform/gtk/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
* platform/gtk/svg/css/getComputedStyle-basic-expected.txt:
* platform/ios/TestExpectations:
* platform/ios/css3/calc/line-height-expected.txt:
* platform/ios/fast/css/css2-system-fonts-expected.txt:
* platform/ios/fast/css/getComputedStyle/computed-style-expected.txt:
* platform/ios/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
* platform/ios/svg/css/getComputedStyle-basic-expected.txt:
* platform/mac-sierra/fast/css/getComputedStyle/computed-style-expected.txt:
* platform/mac-sierra/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
* platform/mac-sierra/svg/css/getComputedStyle-basic-expected.txt:
* platform/mac/fast/css/css2-system-fonts-expected.txt:
* platform/mac/fast/css/getComputedStyle/computed-style-expected.txt:
* platform/mac/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
* platform/mac/fast/text-autosizing/ios/line-height-text-autosizing-expected.txt:
* platform/mac/svg/css/getComputedStyle-basic-expected.txt:
* platform/wincairo/css3/calc/line-height-expected.txt:
* platform/wincairo/fast/css/css2-system-fonts-expected.txt:
* platform/wpe/fast/css/css2-system-fonts-expected.txt:
* platform/wpe/fast/css/getComputedStyle/computed-style-expected.txt:
* platform/wpe/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
* platform/wpe/svg/css/getComputedStyle-basic-expected.txt:
* svg/css/getComputedStyle-basic-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@249686 268f45cc-cd09-0410-ab3c-d52691b4dbfc

54 files changed:
LayoutTests/ChangeLog
LayoutTests/css3/calc/line-height-expected.txt
LayoutTests/fast/css/font-calculated-value-expected.txt
LayoutTests/fast/css/font-calculated-value.html
LayoutTests/fast/css/font-shorthand-from-longhands-expected.txt
LayoutTests/fast/css/font-shorthand-from-longhands.html
LayoutTests/fast/css/font-shorthand-line-height-expected.txt
LayoutTests/fast/css/font-shorthand-line-height.html
LayoutTests/fast/css/getComputedStyle/computed-style-expected.txt
LayoutTests/fast/css/getComputedStyle/computed-style-font-expected.txt
LayoutTests/fast/css/getComputedStyle/computed-style-font.html
LayoutTests/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt
LayoutTests/fast/ruby/ruby-line-height-expected.txt
LayoutTests/fast/ruby/ruby-line-height.html
LayoutTests/fast/text-autosizing/ios/idempotentmode/line-height-boosting-expected.txt
LayoutTests/fast/text-autosizing/ios/idempotentmode/line-height-boosting.html
LayoutTests/fast/text-autosizing/ios/line-height-text-autosizing-expected.txt
LayoutTests/fast/text-autosizing/ios/line-height-text-autosizing.html
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/css/css-inline/parsing/line-height-computed-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-inline/parsing/line-height-computed.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-line-height-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-line-height.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/rendering/replaced-elements/the-select-element/select-1-line-height-expected.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/rendering/replaced-elements/the-select-element/select-1-line-height.html [new file with mode: 0644]
LayoutTests/media/track/track-cue-rendering-on-resize-expected.txt
LayoutTests/media/track/track-cue-rendering-on-resize.html
LayoutTests/platform/gtk/fast/css/css2-system-fonts-expected.txt
LayoutTests/platform/gtk/fast/css/getComputedStyle/computed-style-expected.txt
LayoutTests/platform/gtk/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt
LayoutTests/platform/gtk/svg/css/getComputedStyle-basic-expected.txt
LayoutTests/platform/ios/TestExpectations
LayoutTests/platform/ios/css3/calc/line-height-expected.txt
LayoutTests/platform/ios/fast/css/css2-system-fonts-expected.txt
LayoutTests/platform/ios/fast/css/getComputedStyle/computed-style-expected.txt
LayoutTests/platform/ios/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt
LayoutTests/platform/ios/svg/css/getComputedStyle-basic-expected.txt
LayoutTests/platform/mac-sierra/fast/css/getComputedStyle/computed-style-expected.txt
LayoutTests/platform/mac-sierra/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt
LayoutTests/platform/mac-sierra/svg/css/getComputedStyle-basic-expected.txt
LayoutTests/platform/mac/fast/css/css2-system-fonts-expected.txt
LayoutTests/platform/mac/fast/css/getComputedStyle/computed-style-expected.txt
LayoutTests/platform/mac/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt
LayoutTests/platform/mac/fast/text-autosizing/ios/line-height-text-autosizing-expected.txt
LayoutTests/platform/mac/svg/css/getComputedStyle-basic-expected.txt
LayoutTests/platform/wincairo/css3/calc/line-height-expected.txt
LayoutTests/platform/wincairo/fast/css/css2-system-fonts-expected.txt
LayoutTests/platform/wpe/fast/css/css2-system-fonts-expected.txt
LayoutTests/platform/wpe/fast/css/getComputedStyle/computed-style-expected.txt
LayoutTests/platform/wpe/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt
LayoutTests/platform/wpe/svg/css/getComputedStyle-basic-expected.txt
LayoutTests/svg/css/getComputedStyle-basic-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/css/CSSComputedStyleDeclaration.cpp

index 0322808..f1de19f 100644 (file)
@@ -1,3 +1,60 @@
+2019-09-09  Joonghun Park  <pjh0718@gmail.com>
+
+        getComputedStyle for line-height: normal should return the keyword instead of a length
+        https://bugs.webkit.org/show_bug.cgi?id=201296
+
+        Reviewed by Ryosuke Niwa.
+
+        Per https://github.com/w3c/csswg-drafts/issues/3749,
+        Gecko and Blink has this behavior already.
+
+        This patch makes WebKit has the same behavior with them.
+
+        * css3/calc/line-height-expected.txt:
+        * fast/css/font-calculated-value-expected.txt:
+        * fast/css/font-calculated-value.html:
+        * fast/css/font-shorthand-from-longhands-expected.txt:
+        * fast/css/font-shorthand-from-longhands.html:
+        * fast/css/font-shorthand-line-height-expected.txt:
+        * fast/css/font-shorthand-line-height.html:
+        * fast/css/getComputedStyle/computed-style-expected.txt:
+        * fast/css/getComputedStyle/computed-style-font-expected.txt:
+        * fast/css/getComputedStyle/computed-style-font.html:
+        * fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
+        * fast/ruby/ruby-line-height-expected.txt:
+        * fast/ruby/ruby-line-height.html:
+        * fast/text-autosizing/ios/idempotentmode/line-height-boosting-expected.txt:
+        * fast/text-autosizing/ios/idempotentmode/line-height-boosting.html:
+        * fast/text-autosizing/ios/line-height-text-autosizing-expected.txt:
+        * fast/text-autosizing/ios/line-height-text-autosizing.html:
+        * media/track/track-cue-rendering-on-resize-expected.txt:
+        * media/track/track-cue-rendering-on-resize.html:
+        * platform/gtk/fast/css/css2-system-fonts-expected.txt:
+        * platform/gtk/fast/css/getComputedStyle/computed-style-expected.txt:
+        * platform/gtk/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
+        * platform/gtk/svg/css/getComputedStyle-basic-expected.txt:
+        * platform/ios/TestExpectations:
+        * platform/ios/css3/calc/line-height-expected.txt:
+        * platform/ios/fast/css/css2-system-fonts-expected.txt:
+        * platform/ios/fast/css/getComputedStyle/computed-style-expected.txt:
+        * platform/ios/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
+        * platform/ios/svg/css/getComputedStyle-basic-expected.txt:
+        * platform/mac-sierra/fast/css/getComputedStyle/computed-style-expected.txt:
+        * platform/mac-sierra/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
+        * platform/mac-sierra/svg/css/getComputedStyle-basic-expected.txt:
+        * platform/mac/fast/css/css2-system-fonts-expected.txt:
+        * platform/mac/fast/css/getComputedStyle/computed-style-expected.txt:
+        * platform/mac/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
+        * platform/mac/fast/text-autosizing/ios/line-height-text-autosizing-expected.txt:
+        * platform/mac/svg/css/getComputedStyle-basic-expected.txt:
+        * platform/wincairo/css3/calc/line-height-expected.txt:
+        * platform/wincairo/fast/css/css2-system-fonts-expected.txt:
+        * platform/wpe/fast/css/css2-system-fonts-expected.txt:
+        * platform/wpe/fast/css/getComputedStyle/computed-style-expected.txt:
+        * platform/wpe/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
+        * platform/wpe/svg/css/getComputedStyle-basic-expected.txt:
+        * svg/css/getComputedStyle-basic-expected.txt:
+
 2019-09-09  Ryan Haddad  <ryanhaddad@apple.com>
 
         Unreviewed test gardening, update test expectations for rdar://problem/51229282.
index d29f5a8..0184a23 100644 (file)
@@ -4,7 +4,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 PASS getComputedStyle(document.getElementById("calc-percent"), null).lineHeight is getComputedStyle(document.getElementById("control"), null).lineHeight
-FAIL getComputedStyle(document.getElementById("calc-percent-pixels"), null).lineHeight should be 32px. Was 18px.
+FAIL getComputedStyle(document.getElementById("calc-percent-pixels"), null).lineHeight should be 32px. Was normal.
 PASS successfullyParsed is true
 
 TEST COMPLETE
index ac207ac..a1743bf 100644 (file)
@@ -6,7 +6,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 PASS testDiv.style['font'] is ""
 testDiv.style['font'] = 'italic small-caps calc(100 * 9) 12px arial'
 PASS testDiv.style['font'] is "italic small-caps 900 12px arial"
-PASS window.getComputedStyle(testDiv).getPropertyValue('font') is "italic small-caps 900 normal 12px/14px arial"
+PASS window.getComputedStyle(testDiv).getPropertyValue('font') is "italic small-caps 900 normal 12px/normal arial"
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 6d4f945..a23e238 100644 (file)
@@ -10,7 +10,7 @@ var testDiv = document.getElementById("testDiv");
 shouldBeEmptyString("testDiv.style['font']");
 evalAndLog("testDiv.style['font'] = 'italic small-caps calc(100 * 9) 12px arial'");
 shouldBeEqualToString("testDiv.style['font']", "italic small-caps 900 12px arial");
-shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('font')", "italic small-caps 900 normal 12px/14px arial");
+shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('font')", "italic small-caps 900 normal 12px/normal arial");
 
 </script>
 <script src="../../resources/js-test-post.js"></script>
index 6c6df9f..7c98fdc 100644 (file)
@@ -4,23 +4,23 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 PASS style.font is ''
-PASS computedStyle.font is 'normal normal normal normal 20px/23px foobar'
+PASS computedStyle.font is 'normal normal normal normal 20px/normal foobar'
 PASS computedStyle.fontSize is '20px'
 PASS checkFontStyleValue() is true
 PASS style.font is '20px sans-serif'
-PASS computedStyle.font is 'normal normal normal normal 20px/23px sans-serif'
+PASS computedStyle.font is 'normal normal normal normal 20px/normal sans-serif'
 PASS computedStyle.fontFamily is 'sans-serif'
 PASS checkFontStyleValue() is true
 PASS style.font is 'italic 20px sans-serif'
-PASS computedStyle.font is 'italic normal normal normal 20px/23px sans-serif'
+PASS computedStyle.font is 'italic normal normal normal 20px/normal sans-serif'
 PASS computedStyle.fontStyle is 'italic'
 PASS checkFontStyleValue() is true
 PASS style.font is 'italic small-caps 20px sans-serif'
-PASS computedStyle.font is 'italic small-caps normal normal 20px/23px sans-serif'
+PASS computedStyle.font is 'italic small-caps normal normal 20px/normal sans-serif'
 PASS computedStyle.fontVariant is 'small-caps'
 PASS checkFontStyleValue() is true
 PASS style.font is 'italic small-caps bold 20px sans-serif'
-PASS computedStyle.font is 'italic small-caps bold normal 20px/23px sans-serif'
+PASS computedStyle.font is 'italic small-caps bold normal 20px/normal sans-serif'
 PASS computedStyle.fontWeight is 'bold'
 PASS checkFontStyleValue() is true
 PASS style.font is 'italic small-caps bold 20px/40px sans-serif'
@@ -28,14 +28,14 @@ PASS computedStyle.font is 'italic small-caps bold normal 20px/40px sans-serif'
 PASS computedStyle.lineHeight is '40px'
 PASS checkFontStyleValue() is true
 PASS style.font is ''
-PASS computedStyle.font is 'normal normal normal normal 16px/18px foobar'
+PASS computedStyle.font is 'normal normal normal normal 16px/normal foobar'
 PASS checkFontStyleValue() is true
 PASS style.font is ''
-PASS computedStyle.font is 'normal normal bold normal 16px/18px foobar'
+PASS computedStyle.font is 'normal normal bold normal 16px/normal foobar'
 PASS computedStyle.fontWeight is 'bold'
 PASS checkFontStyleValue() is true
 PASS style.font is 'bold 40px sans-serif'
-PASS computedStyle.font is 'normal normal bold normal 40px/46px sans-serif'
+PASS computedStyle.font is 'normal normal bold normal 40px/normal sans-serif'
 PASS computedStyle.fontSize is '40px'
 PASS computedStyle.fontFamily is 'sans-serif'
 PASS checkFontStyleValue() is true
index 7e774bf..6e9a2b2 100644 (file)
@@ -36,32 +36,32 @@ function checkFontStyleValue() {
 style.fontSize = "20px";
 // We need at least the font-family to build the shorthand.
 shouldBe("style.font", "''");
-shouldBe("computedStyle.font", "'normal normal normal normal 20px/23px foobar'");
+shouldBe("computedStyle.font", "'normal normal normal normal 20px/normal foobar'");
 shouldBe("computedStyle.fontSize", "'20px'");
 shouldBe("checkFontStyleValue()", "true");
 
 style.fontSize = "20px";
 style.fontFamily = "sans-serif";
 shouldBe("style.font", "'20px sans-serif'");
-shouldBe("computedStyle.font", "'normal normal normal normal 20px/23px sans-serif'");
+shouldBe("computedStyle.font", "'normal normal normal normal 20px/normal sans-serif'");
 shouldBe("computedStyle.fontFamily", "'sans-serif'");
 shouldBe("checkFontStyleValue()", "true");
 
 style.fontStyle = "italic";
 shouldBe("style.font", "'italic 20px sans-serif'");
-shouldBe("computedStyle.font", "'italic normal normal normal 20px/23px sans-serif'");
+shouldBe("computedStyle.font", "'italic normal normal normal 20px/normal sans-serif'");
 shouldBe("computedStyle.fontStyle", "'italic'");
 shouldBe("checkFontStyleValue()", "true");
 
 style.fontVariant = "small-caps";
 shouldBe("style.font", "'italic small-caps 20px sans-serif'");
-shouldBe("computedStyle.font", "'italic small-caps normal normal 20px/23px sans-serif'");
+shouldBe("computedStyle.font", "'italic small-caps normal normal 20px/normal sans-serif'");
 shouldBe("computedStyle.fontVariant", "'small-caps'");
 shouldBe("checkFontStyleValue()", "true");
 
 style.fontWeight = "bold";
 shouldBe("style.font", "'italic small-caps bold 20px sans-serif'");
-shouldBe("computedStyle.font", "'italic small-caps bold normal 20px/23px sans-serif'");
+shouldBe("computedStyle.font", "'italic small-caps bold normal 20px/normal sans-serif'");
 shouldBe("computedStyle.fontWeight", "'bold'");
 shouldBe("checkFontStyleValue()", "true");
 
@@ -73,13 +73,13 @@ shouldBe("checkFontStyleValue()", "true");
 
 style.font = "";
 shouldBe("style.font", "''");
-shouldBe("computedStyle.font", "'normal normal normal normal 16px/18px foobar'");
+shouldBe("computedStyle.font", "'normal normal normal normal 16px/normal foobar'");
 shouldBe("checkFontStyleValue()", "true");
 
 style.fontWeight = "bold";
 // It is normal to return null as the font-size is mandatory to build the shorthand.
 shouldBe("style.font", "''");
-shouldBe("computedStyle.font", "'normal normal bold normal 16px/18px foobar'");
+shouldBe("computedStyle.font", "'normal normal bold normal 16px/normal foobar'");
 shouldBe("computedStyle.fontWeight", "'bold'");
 shouldBe("checkFontStyleValue()", "true");
 
@@ -87,7 +87,7 @@ style.fontSize = "40px";
 style.fontFamily = "sans-serif";
 style.fontWeight = "bold";
 shouldBe("style.font", "'bold 40px sans-serif'");
-shouldBe("computedStyle.font", "'normal normal bold normal 40px/46px sans-serif'");
+shouldBe("computedStyle.font", "'normal normal bold normal 40px/normal sans-serif'");
 shouldBe("computedStyle.fontSize", "'40px'");
 shouldBe("computedStyle.fontFamily", "'sans-serif'");
 shouldBe("checkFontStyleValue()", "true");
index 1dbff02..434ca9f 100644 (file)
@@ -4,9 +4,9 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 PASS lineHeight(system_font_1) is '100px'
-PASS lineHeight(system_font_2) is '16px'
+PASS lineHeight(system_font_2) is 'normal'
 PASS lineHeight(shorthand_normal_1) is '100px'
-PASS lineHeight(shorthand_normal_2) is '12px'
+PASS lineHeight(shorthand_normal_2) is 'normal'
 PASS lineHeight(shorthand_line_height_1) is '100px'
 PASS lineHeight(shorthand_line_height_2) is '200px'
 PASS successfullyParsed is true
index bef1558..0e41609 100644 (file)
@@ -24,9 +24,9 @@
     }
 
     shouldBe("lineHeight(system_font_1)", "'100px'");
-    shouldBe("lineHeight(system_font_2)", "'16px'");
+    shouldBe("lineHeight(system_font_2)", "'normal'");
     shouldBe("lineHeight(shorthand_normal_1)", "'100px'");
-    shouldBe("lineHeight(shorthand_normal_2)", "'12px'");
+    shouldBe("lineHeight(shorthand_normal_2)", "'normal'");
     shouldBe("lineHeight(shorthand_line_height_1)", "'100px'");
     shouldBe("lineHeight(shorthand_line_height_2)", "'200px'");
 </script>
index a446e5b..5e25aad 100644 (file)
@@ -109,7 +109,7 @@ kerning: 0;
 left: auto;
 letter-spacing: normal;
 lighting-color: rgb(255, 255, 255);
-line-height: 18px;
+line-height: normal;
 list-style-image: none;
 list-style-position: outside;
 list-style-type: disc;
index 8ce5858..7c352b6 100644 (file)
@@ -3,62 +3,62 @@ This test exercises the 'font' shorthand property in CSS computed styles.
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS computedFont('10px sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
-PASS computedFont('10px sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
-PASS computedFont('10px SANS-SERIF') is 'normal normal normal normal 10px/12px sans-serif'
-PASS computedFont('12px sans-serif') is 'normal normal normal normal 12px/14px sans-serif'
-PASS computedFont('12px  sans-serif') is 'normal normal normal normal 12px/14px sans-serif'
-PASS computedFont('10px sans-serif, sans-serif') is 'normal normal normal normal 10px/12px sans-serif, sans-serif'
-PASS computedFont('10px sans-serif, serif') is 'normal normal normal normal 10px/12px sans-serif, serif'
-PASS computedFont('12px ahem') is 'normal normal normal normal 12px/12px ahem'
-PASS computedFont('12px unlikely-font-name') is 'normal normal normal normal 12px/14px unlikely-font-name'
-PASS computedFont('100 10px sans-serif') is 'normal normal 100 normal 10px/12px sans-serif'
-PASS computedFont('200 10px sans-serif') is 'normal normal 200 normal 10px/12px sans-serif'
-PASS computedFont('300 10px sans-serif') is 'normal normal 300 normal 10px/12px sans-serif'
-PASS computedFont('400 10px sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
-PASS computedFont('normal 10px sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
-PASS computedFont('500 10px sans-serif') is 'normal normal 500 normal 10px/12px sans-serif'
-PASS computedFont('600 10px sans-serif') is 'normal normal 600 normal 10px/12px sans-serif'
-PASS computedFont('700 10px sans-serif') is 'normal normal bold normal 10px/12px sans-serif'
-PASS computedFont('bold 10px sans-serif') is 'normal normal bold normal 10px/12px sans-serif'
-PASS computedFont('800 10px sans-serif') is 'normal normal 800 normal 10px/12px sans-serif'
-PASS computedFont('900 10px sans-serif') is 'normal normal 900 normal 10px/12px sans-serif'
-PASS computedFont('italic 10px sans-serif') is 'italic normal normal normal 10px/12px sans-serif'
-PASS computedFont('small-caps 10px sans-serif') is 'normal small-caps normal normal 10px/12px sans-serif'
-PASS computedFont('italic small-caps 10px sans-serif') is 'italic small-caps normal normal 10px/12px sans-serif'
-PASS computedFont('italic small-caps bold 10px sans-serif') is 'italic small-caps bold normal 10px/12px sans-serif'
+PASS computedFont('10px sans-serif') is 'normal normal normal normal 10px/normal sans-serif'
+PASS computedFont('10px sans-serif') is 'normal normal normal normal 10px/normal sans-serif'
+PASS computedFont('10px SANS-SERIF') is 'normal normal normal normal 10px/normal sans-serif'
+PASS computedFont('12px sans-serif') is 'normal normal normal normal 12px/normal sans-serif'
+PASS computedFont('12px  sans-serif') is 'normal normal normal normal 12px/normal sans-serif'
+PASS computedFont('10px sans-serif, sans-serif') is 'normal normal normal normal 10px/normal sans-serif, sans-serif'
+PASS computedFont('10px sans-serif, serif') is 'normal normal normal normal 10px/normal sans-serif, serif'
+PASS computedFont('12px ahem') is 'normal normal normal normal 12px/normal ahem'
+PASS computedFont('12px unlikely-font-name') is 'normal normal normal normal 12px/normal unlikely-font-name'
+PASS computedFont('100 10px sans-serif') is 'normal normal 100 normal 10px/normal sans-serif'
+PASS computedFont('200 10px sans-serif') is 'normal normal 200 normal 10px/normal sans-serif'
+PASS computedFont('300 10px sans-serif') is 'normal normal 300 normal 10px/normal sans-serif'
+PASS computedFont('400 10px sans-serif') is 'normal normal normal normal 10px/normal sans-serif'
+PASS computedFont('normal 10px sans-serif') is 'normal normal normal normal 10px/normal sans-serif'
+PASS computedFont('500 10px sans-serif') is 'normal normal 500 normal 10px/normal sans-serif'
+PASS computedFont('600 10px sans-serif') is 'normal normal 600 normal 10px/normal sans-serif'
+PASS computedFont('700 10px sans-serif') is 'normal normal bold normal 10px/normal sans-serif'
+PASS computedFont('bold 10px sans-serif') is 'normal normal bold normal 10px/normal sans-serif'
+PASS computedFont('800 10px sans-serif') is 'normal normal 800 normal 10px/normal sans-serif'
+PASS computedFont('900 10px sans-serif') is 'normal normal 900 normal 10px/normal sans-serif'
+PASS computedFont('italic 10px sans-serif') is 'italic normal normal normal 10px/normal sans-serif'
+PASS computedFont('small-caps 10px sans-serif') is 'normal small-caps normal normal 10px/normal sans-serif'
+PASS computedFont('italic small-caps 10px sans-serif') is 'italic small-caps normal normal 10px/normal sans-serif'
+PASS computedFont('italic small-caps bold 10px sans-serif') is 'italic small-caps bold normal 10px/normal sans-serif'
 PASS computedFont('10px/100% sans-serif') is 'normal normal normal normal 10px/10px sans-serif'
 PASS computedFont('10px/100px sans-serif') is 'normal normal normal normal 10px/100px sans-serif'
-PASS computedFont('10px/normal sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
-PASS computedFont('10px/normal sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('10px sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('10px sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('10px SANS-SERIF') is 'normal normal normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('12px sans-serif') is 'normal normal normal normal 12px/14px sans-serif'
-PASS computedFontCSSValue('12px  sans-serif') is 'normal normal normal normal 12px/14px sans-serif'
-PASS computedFontCSSValue('10px sans-serif, sans-serif') is 'normal normal normal normal 10px/12px sans-serif, sans-serif'
-PASS computedFontCSSValue('10px sans-serif, serif') is 'normal normal normal normal 10px/12px sans-serif, serif'
-PASS computedFontCSSValue('12px ahem') is 'normal normal normal normal 12px/12px ahem'
-PASS computedFontCSSValue('12px unlikely-font-name') is 'normal normal normal normal 12px/14px unlikely-font-name'
-PASS computedFontCSSValue('100 10px sans-serif') is 'normal normal 100 normal 10px/12px sans-serif'
-PASS computedFontCSSValue('200 10px sans-serif') is 'normal normal 200 normal 10px/12px sans-serif'
-PASS computedFontCSSValue('300 10px sans-serif') is 'normal normal 300 normal 10px/12px sans-serif'
-PASS computedFontCSSValue('400 10px sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('normal 10px sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('500 10px sans-serif') is 'normal normal 500 normal 10px/12px sans-serif'
-PASS computedFontCSSValue('600 10px sans-serif') is 'normal normal 600 normal 10px/12px sans-serif'
-PASS computedFontCSSValue('700 10px sans-serif') is 'normal normal bold normal 10px/12px sans-serif'
-PASS computedFontCSSValue('bold 10px sans-serif') is 'normal normal bold normal 10px/12px sans-serif'
-PASS computedFontCSSValue('800 10px sans-serif') is 'normal normal 800 normal 10px/12px sans-serif'
-PASS computedFontCSSValue('900 10px sans-serif') is 'normal normal 900 normal 10px/12px sans-serif'
-PASS computedFontCSSValue('italic 10px sans-serif') is 'italic normal normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('small-caps 10px sans-serif') is 'normal small-caps normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('italic small-caps 10px sans-serif') is 'italic small-caps normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('italic small-caps bold 10px sans-serif') is 'italic small-caps bold normal 10px/12px sans-serif'
+PASS computedFont('10px/normal sans-serif') is 'normal normal normal normal 10px/normal sans-serif'
+PASS computedFont('10px/normal sans-serif') is 'normal normal normal normal 10px/normal sans-serif'
+PASS computedFontCSSValue('10px sans-serif') is 'normal normal normal normal 10px/normal sans-serif'
+PASS computedFontCSSValue('10px sans-serif') is 'normal normal normal normal 10px/normal sans-serif'
+PASS computedFontCSSValue('10px SANS-SERIF') is 'normal normal normal normal 10px/normal sans-serif'
+PASS computedFontCSSValue('12px sans-serif') is 'normal normal normal normal 12px/normal sans-serif'
+PASS computedFontCSSValue('12px  sans-serif') is 'normal normal normal normal 12px/normal sans-serif'
+PASS computedFontCSSValue('10px sans-serif, sans-serif') is 'normal normal normal normal 10px/normal sans-serif, sans-serif'
+PASS computedFontCSSValue('10px sans-serif, serif') is 'normal normal normal normal 10px/normal sans-serif, serif'
+PASS computedFontCSSValue('12px ahem') is 'normal normal normal normal 12px/normal ahem'
+PASS computedFontCSSValue('12px unlikely-font-name') is 'normal normal normal normal 12px/normal unlikely-font-name'
+PASS computedFontCSSValue('100 10px sans-serif') is 'normal normal 100 normal 10px/normal sans-serif'
+PASS computedFontCSSValue('200 10px sans-serif') is 'normal normal 200 normal 10px/normal sans-serif'
+PASS computedFontCSSValue('300 10px sans-serif') is 'normal normal 300 normal 10px/normal sans-serif'
+PASS computedFontCSSValue('400 10px sans-serif') is 'normal normal normal normal 10px/normal sans-serif'
+PASS computedFontCSSValue('normal 10px sans-serif') is 'normal normal normal normal 10px/normal sans-serif'
+PASS computedFontCSSValue('500 10px sans-serif') is 'normal normal 500 normal 10px/normal sans-serif'
+PASS computedFontCSSValue('600 10px sans-serif') is 'normal normal 600 normal 10px/normal sans-serif'
+PASS computedFontCSSValue('700 10px sans-serif') is 'normal normal bold normal 10px/normal sans-serif'
+PASS computedFontCSSValue('bold 10px sans-serif') is 'normal normal bold normal 10px/normal sans-serif'
+PASS computedFontCSSValue('800 10px sans-serif') is 'normal normal 800 normal 10px/normal sans-serif'
+PASS computedFontCSSValue('900 10px sans-serif') is 'normal normal 900 normal 10px/normal sans-serif'
+PASS computedFontCSSValue('italic 10px sans-serif') is 'italic normal normal normal 10px/normal sans-serif'
+PASS computedFontCSSValue('small-caps 10px sans-serif') is 'normal small-caps normal normal 10px/normal sans-serif'
+PASS computedFontCSSValue('italic small-caps 10px sans-serif') is 'italic small-caps normal normal 10px/normal sans-serif'
+PASS computedFontCSSValue('italic small-caps bold 10px sans-serif') is 'italic small-caps bold normal 10px/normal sans-serif'
 PASS computedFontCSSValue('10px/100% sans-serif') is 'normal normal normal normal 10px/10px sans-serif'
 PASS computedFontCSSValue('10px/100px sans-serif') is 'normal normal normal normal 10px/100px sans-serif'
-PASS computedFontCSSValue('10px/normal sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('10px/normal sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
+PASS computedFontCSSValue('10px/normal sans-serif') is 'normal normal normal normal 10px/normal sans-serif'
+PASS computedFontCSSValue('10px/normal sans-serif') is 'normal normal normal normal 10px/normal sans-serif'
 PASS successfullyParsed is true
 
 TEST COMPLETE
index dd9a589..03b06d2 100644 (file)
@@ -25,63 +25,63 @@ function computedFontCSSValue(fontString) {
     return cssValue.cssText;
 }
 
-shouldBe("computedFont('10px sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFont('10px sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFont('10px SANS-SERIF')", "'normal normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFont('12px sans-serif')", "'normal normal normal normal 12px/14px sans-serif'");
-shouldBe("computedFont('12px  sans-serif')", "'normal normal normal normal 12px/14px sans-serif'");
-shouldBe("computedFont('10px sans-serif, sans-serif')", "'normal normal normal normal 10px/12px sans-serif, sans-serif'");
-shouldBe("computedFont('10px sans-serif, serif')", "'normal normal normal normal 10px/12px sans-serif, serif'");
-shouldBe("computedFont('12px ahem')", "'normal normal normal normal 12px/12px ahem'");
-shouldBe("computedFont('12px unlikely-font-name')", "'normal normal normal normal 12px/14px unlikely-font-name'");
-shouldBe("computedFont('100 10px sans-serif')", "'normal normal 100 normal 10px/12px sans-serif'");
-shouldBe("computedFont('200 10px sans-serif')", "'normal normal 200 normal 10px/12px sans-serif'");
-shouldBe("computedFont('300 10px sans-serif')", "'normal normal 300 normal 10px/12px sans-serif'");
-shouldBe("computedFont('400 10px sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFont('normal 10px sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFont('500 10px sans-serif')", "'normal normal 500 normal 10px/12px sans-serif'");
-shouldBe("computedFont('600 10px sans-serif')", "'normal normal 600 normal 10px/12px sans-serif'");
-shouldBe("computedFont('700 10px sans-serif')", "'normal normal bold normal 10px/12px sans-serif'");
-shouldBe("computedFont('bold 10px sans-serif')", "'normal normal bold normal 10px/12px sans-serif'");
-shouldBe("computedFont('800 10px sans-serif')", "'normal normal 800 normal 10px/12px sans-serif'");
-shouldBe("computedFont('900 10px sans-serif')", "'normal normal 900 normal 10px/12px sans-serif'");
-shouldBe("computedFont('italic 10px sans-serif')", "'italic normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFont('small-caps 10px sans-serif')", "'normal small-caps normal normal 10px/12px sans-serif'");
-shouldBe("computedFont('italic small-caps 10px sans-serif')", "'italic small-caps normal normal 10px/12px sans-serif'");
-shouldBe("computedFont('italic small-caps bold 10px sans-serif')", "'italic small-caps bold normal 10px/12px sans-serif'");
+shouldBe("computedFont('10px sans-serif')", "'normal normal normal normal 10px/normal sans-serif'");
+shouldBe("computedFont('10px sans-serif')", "'normal normal normal normal 10px/normal sans-serif'");
+shouldBe("computedFont('10px SANS-SERIF')", "'normal normal normal normal 10px/normal sans-serif'");
+shouldBe("computedFont('12px sans-serif')", "'normal normal normal normal 12px/normal sans-serif'");
+shouldBe("computedFont('12px  sans-serif')", "'normal normal normal normal 12px/normal sans-serif'");
+shouldBe("computedFont('10px sans-serif, sans-serif')", "'normal normal normal normal 10px/normal sans-serif, sans-serif'");
+shouldBe("computedFont('10px sans-serif, serif')", "'normal normal normal normal 10px/normal sans-serif, serif'");
+shouldBe("computedFont('12px ahem')", "'normal normal normal normal 12px/normal ahem'");
+shouldBe("computedFont('12px unlikely-font-name')", "'normal normal normal normal 12px/normal unlikely-font-name'");
+shouldBe("computedFont('100 10px sans-serif')", "'normal normal 100 normal 10px/normal sans-serif'");
+shouldBe("computedFont('200 10px sans-serif')", "'normal normal 200 normal 10px/normal sans-serif'");
+shouldBe("computedFont('300 10px sans-serif')", "'normal normal 300 normal 10px/normal sans-serif'");
+shouldBe("computedFont('400 10px sans-serif')", "'normal normal normal normal 10px/normal sans-serif'");
+shouldBe("computedFont('normal 10px sans-serif')", "'normal normal normal normal 10px/normal sans-serif'");
+shouldBe("computedFont('500 10px sans-serif')", "'normal normal 500 normal 10px/normal sans-serif'");
+shouldBe("computedFont('600 10px sans-serif')", "'normal normal 600 normal 10px/normal sans-serif'");
+shouldBe("computedFont('700 10px sans-serif')", "'normal normal bold normal 10px/normal sans-serif'");
+shouldBe("computedFont('bold 10px sans-serif')", "'normal normal bold normal 10px/normal sans-serif'");
+shouldBe("computedFont('800 10px sans-serif')", "'normal normal 800 normal 10px/normal sans-serif'");
+shouldBe("computedFont('900 10px sans-serif')", "'normal normal 900 normal 10px/normal sans-serif'");
+shouldBe("computedFont('italic 10px sans-serif')", "'italic normal normal normal 10px/normal sans-serif'");
+shouldBe("computedFont('small-caps 10px sans-serif')", "'normal small-caps normal normal 10px/normal sans-serif'");
+shouldBe("computedFont('italic small-caps 10px sans-serif')", "'italic small-caps normal normal 10px/normal sans-serif'");
+shouldBe("computedFont('italic small-caps bold 10px sans-serif')", "'italic small-caps bold normal 10px/normal sans-serif'");
 shouldBe("computedFont('10px/100% sans-serif')", "'normal normal normal normal 10px/10px sans-serif'");
 shouldBe("computedFont('10px/100px sans-serif')", "'normal normal normal normal 10px/100px sans-serif'");
-shouldBe("computedFont('10px/normal sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFont('10px/normal sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFont('10px/normal sans-serif')", "'normal normal normal normal 10px/normal sans-serif'");
+shouldBe("computedFont('10px/normal sans-serif')", "'normal normal normal normal 10px/normal sans-serif'");
 
-shouldBe("computedFontCSSValue('10px sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('10px sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('10px SANS-SERIF')", "'normal normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('12px sans-serif')", "'normal normal normal normal 12px/14px sans-serif'");
-shouldBe("computedFontCSSValue('12px  sans-serif')", "'normal normal normal normal 12px/14px sans-serif'");
-shouldBe("computedFontCSSValue('10px sans-serif, sans-serif')", "'normal normal normal normal 10px/12px sans-serif, sans-serif'");
-shouldBe("computedFontCSSValue('10px sans-serif, serif')", "'normal normal normal normal 10px/12px sans-serif, serif'");
-shouldBe("computedFontCSSValue('12px ahem')", "'normal normal normal normal 12px/12px ahem'");
-shouldBe("computedFontCSSValue('12px unlikely-font-name')", "'normal normal normal normal 12px/14px unlikely-font-name'");
-shouldBe("computedFontCSSValue('100 10px sans-serif')", "'normal normal 100 normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('200 10px sans-serif')", "'normal normal 200 normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('300 10px sans-serif')", "'normal normal 300 normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('400 10px sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('normal 10px sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('500 10px sans-serif')", "'normal normal 500 normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('600 10px sans-serif')", "'normal normal 600 normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('700 10px sans-serif')", "'normal normal bold normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('bold 10px sans-serif')", "'normal normal bold normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('800 10px sans-serif')", "'normal normal 800 normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('900 10px sans-serif')", "'normal normal 900 normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('italic 10px sans-serif')", "'italic normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('small-caps 10px sans-serif')", "'normal small-caps normal normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('italic small-caps 10px sans-serif')", "'italic small-caps normal normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('italic small-caps bold 10px sans-serif')", "'italic small-caps bold normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('10px sans-serif')", "'normal normal normal normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('10px sans-serif')", "'normal normal normal normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('10px SANS-SERIF')", "'normal normal normal normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('12px sans-serif')", "'normal normal normal normal 12px/normal sans-serif'");
+shouldBe("computedFontCSSValue('12px  sans-serif')", "'normal normal normal normal 12px/normal sans-serif'");
+shouldBe("computedFontCSSValue('10px sans-serif, sans-serif')", "'normal normal normal normal 10px/normal sans-serif, sans-serif'");
+shouldBe("computedFontCSSValue('10px sans-serif, serif')", "'normal normal normal normal 10px/normal sans-serif, serif'");
+shouldBe("computedFontCSSValue('12px ahem')", "'normal normal normal normal 12px/normal ahem'");
+shouldBe("computedFontCSSValue('12px unlikely-font-name')", "'normal normal normal normal 12px/normal unlikely-font-name'");
+shouldBe("computedFontCSSValue('100 10px sans-serif')", "'normal normal 100 normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('200 10px sans-serif')", "'normal normal 200 normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('300 10px sans-serif')", "'normal normal 300 normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('400 10px sans-serif')", "'normal normal normal normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('normal 10px sans-serif')", "'normal normal normal normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('500 10px sans-serif')", "'normal normal 500 normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('600 10px sans-serif')", "'normal normal 600 normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('700 10px sans-serif')", "'normal normal bold normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('bold 10px sans-serif')", "'normal normal bold normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('800 10px sans-serif')", "'normal normal 800 normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('900 10px sans-serif')", "'normal normal 900 normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('italic 10px sans-serif')", "'italic normal normal normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('small-caps 10px sans-serif')", "'normal small-caps normal normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('italic small-caps 10px sans-serif')", "'italic small-caps normal normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('italic small-caps bold 10px sans-serif')", "'italic small-caps bold normal 10px/normal sans-serif'");
 shouldBe("computedFontCSSValue('10px/100% sans-serif')", "'normal normal normal normal 10px/10px sans-serif'");
 shouldBe("computedFontCSSValue('10px/100px sans-serif')", "'normal normal normal normal 10px/100px sans-serif'");
-shouldBe("computedFontCSSValue('10px/normal sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('10px/normal sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('10px/normal sans-serif')", "'normal normal normal normal 10px/normal sans-serif'");
+shouldBe("computedFontCSSValue('10px/normal sans-serif')", "'normal normal normal normal 10px/normal sans-serif'");
 </script>
 <script src="../../../resources/js-test-post.js"></script>
 </body>
index 1736a42..4c9b14d 100644 (file)
@@ -108,7 +108,7 @@ kerning: 0
 left: auto
 letter-spacing: normal
 lighting-color: rgb(255, 255, 255)
-line-height: 18px
+line-height: normal
 list-style-image: none
 list-style-position: outside
 list-style-type: disc
index efd776d..725567d 100644 (file)
@@ -8,7 +8,7 @@ PASS getLineHeight('p') is "48px"
 PASS [object HTMLElement] is non-null.
 PASS getLineHeight('r') is "48px"
 PASS [object HTMLElement] is non-null.
-PASS getLineHeight('t') is "10px"
+PASS getLineHeight('t') is "normal"
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 97e5cb1..9d19a4e 100644 (file)
@@ -21,7 +21,7 @@ document.body.appendChild(div);
 
 shouldBeEqualToString("getLineHeight('p')", "48px");
 shouldBeEqualToString("getLineHeight('r')", "48px");
-shouldBeEqualToString("getLineHeight('t')", "10px");
+shouldBeEqualToString("getLineHeight('t')", "normal");
 </script>
 <script src="../../resources/js-test-post.js"></script>
 </body>
index ac33c4c..dcc6b16 100644 (file)
@@ -2,7 +2,7 @@ PASS result is >= 18
 PASS result is >= 13
 PASS result is >= 11
 PASS result is 12
-PASS result is 22
+PASS result is NaN
 PASS result is 18
 PASS result is 18
 PASS result is 18
index 8efefb6..79babd6 100644 (file)
@@ -36,7 +36,7 @@ result = Number.parseInt(window.getComputedStyle(target4).getPropertyValue("line
 shouldBe("result", "12");
 
 result = Number.parseInt(window.getComputedStyle(target5).getPropertyValue("line-height"));
-shouldBe("result", "22");
+shouldBe("result", "NaN");
 
 result = Number.parseInt(window.getComputedStyle(target6).getPropertyValue("line-height"));
 shouldBe("result", "18");
index b66ae27..cdf7b00 100644 (file)
@@ -4,7 +4,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 Case without text size adjust.
-PASS window.getComputedStyle(testDivNoAdjust).getPropertyValue('line-height') is "23px"
+PASS window.getComputedStyle(testDivNoAdjust).getPropertyValue('line-height') is "normal"
 PASS window.getComputedStyle(testDivNoAdjust).getPropertyValue('font-size') is "20px"
 testDivNoAdjust.style['line-height'] = '1.6'
 PASS window.getComputedStyle(testDivNoAdjust).getPropertyValue('line-height') is "32px"
index 7c7222a..74030a7 100644 (file)
@@ -26,7 +26,7 @@ description("Test the 'line-height' property interaction with '-webkit-text-size
 
 debug("Case without text size adjust.");
 var testDivNoAdjust = document.getElementById("testDivNoAdjust");
-shouldBeEqualToString("window.getComputedStyle(testDivNoAdjust).getPropertyValue('line-height')", "23px");
+shouldBeEqualToString("window.getComputedStyle(testDivNoAdjust).getPropertyValue('line-height')", "normal");
 shouldBeEqualToString("window.getComputedStyle(testDivNoAdjust).getPropertyValue('font-size')", "20px");
 evalAndLog("testDivNoAdjust.style['line-height'] = '1.6'");
 // font-size * line-height == 20px * 1.6 == 32px
index 75ef556..41f39c7 100644 (file)
@@ -1,3 +1,22 @@
+2019-09-09  Joonghun Park  <jh718.park@samsung.com>
+
+        getComputedStyle for line-height: normal should return the keyword instead of a length
+        https://bugs.webkit.org/show_bug.cgi?id=201296
+
+        Reviewed by Ryosuke Niwa.
+
+        Per https://github.com/w3c/csswg-drafts/issues/3749,
+        Gecko and Blink has this behavior already.
+
+        This patch makes WebKit has the same behavior with them.
+
+        * web-platform-tests/css/css-inline/parsing/line-height-computed-expected.txt: Added.
+        * web-platform-tests/css/css-inline/parsing/line-height-computed.html: Added.
+        * web-platform-tests/css/cssom/getComputedStyle-line-height-expected.txt: Added.
+        * web-platform-tests/css/cssom/getComputedStyle-line-height.html: Added.
+        * web-platform-tests/html/rendering/replaced-elements/the-select-element/select-1-line-height-expected.html: Added.
+        * web-platform-tests/html/rendering/replaced-elements/the-select-element/select-1-line-height.html: Added.
+
 2019-09-09  Chris Dumez  <cdumez@apple.com>
 
         Resync service workers WPT tests from upstream
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-inline/parsing/line-height-computed-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-inline/parsing/line-height-computed-expected.txt
new file mode 100644 (file)
index 0000000..9cb6626
--- /dev/null
@@ -0,0 +1,12 @@
+
+PASS Property line-height value 'normal' computes to 'normal' 
+PASS Property line-height value '0' computes to '0px' 
+PASS Property line-height value '2' computes to '80px' 
+PASS Property line-height value '0px' computes to '0px' 
+PASS Property line-height value '10px' computes to '10px' 
+PASS Property line-height value '0%' computes to '0px' 
+PASS Property line-height value '200%' computes to '80px' 
+FAIL Property line-height value 'calc(200% + 10px)' computes to '90px' assert_equals: expected "90px" but got "normal"
+PASS Property line-height value 'calc(10px - 0.5em)' computes to '0px' 
+PASS Property line-height value 'calc(10px + 0.5em)' computes to '30px' 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-inline/parsing/line-height-computed.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-inline/parsing/line-height-computed.html
new file mode 100644 (file)
index 0000000..dff6fc6
--- /dev/null
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Inline Layout: getComputedStyle().lineHeight</title>
+<link rel="help" href="https://drafts.csswg.org/css-inline-3/#line-height-property">
+<meta name="assert" content="line-height computed value is normal or a length.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+<style>
+  #container {
+    font-size: 40px;
+  }
+</style>
+</head>
+<body>
+<div id="container">
+  <div id="target"></div>
+</div>
+<script>
+test_computed_value("line-height", "normal");
+
+test_computed_value("line-height", "0", "0px");
+test_computed_value("line-height", "2", "80px");
+test_computed_value("line-height", "0px");
+test_computed_value("line-height", "10px");
+test_computed_value("line-height", "0%", "0px");
+test_computed_value("line-height", "200%", "80px");
+test_computed_value("line-height", "calc(200% + 10px)", "90px");
+
+test_computed_value('line-height', 'calc(10px - 0.5em)', '0px');
+test_computed_value('line-height', 'calc(10px + 0.5em)', '30px');
+</script>
+</body>
+</html>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-line-height-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-line-height-expected.txt
new file mode 100644 (file)
index 0000000..2e25ee6
--- /dev/null
@@ -0,0 +1,6 @@
+
+PASS line-height: normal 
+PASS line-height: 1 
+PASS line-height: 10px 
+FAIL line-height: 10% assert_equals: 10% should compute to 1.6px expected "1.6px" but got "1.600000023841858px"
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-line-height.html b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-line-height.html
new file mode 100644 (file)
index 0000000..089a6d8
--- /dev/null
@@ -0,0 +1,23 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Test: line-height resolved value</title>
+<link rel="help" href="https://drafts.csswg.org/cssom/#resolved-values">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3749">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+  div { font-size: 16px; }
+</style>
+<div style="line-height: normal" data-expected="normal"></div>
+<div style="line-height: 1" data-expected="16px"></div>
+<div style="line-height: 10px" data-expected="10px"></div>
+<div style="line-height: 10%" data-expected="1.6px"></div>
+<script>
+for (const e of document.querySelectorAll("div")) {
+  const specified = e.style.lineHeight;
+  test(function() {
+    const expected = e.getAttribute("data-expected");
+    assert_equals(getComputedStyle(e).lineHeight, expected, specified + " should compute to " + expected);
+  }, "line-height: " + specified);
+}
+</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/rendering/replaced-elements/the-select-element/select-1-line-height-expected.html b/LayoutTests/imported/w3c/web-platform-tests/html/rendering/replaced-elements/the-select-element/select-1-line-height-expected.html
new file mode 100644 (file)
index 0000000..26e5f33
--- /dev/null
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML>
+<!--
+     Any copyright is dedicated to the Public Domain.
+     http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+  <meta charset="utf-8">
+  <title>Reference: Combobox ignores CSS 'line-height'</title>
+  <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+  <style type="text/css">
+html,body {
+  color:black; background-color:white; font:16px/1 monospace;
+}
+
+  </style>
+</head>
+<body>
+
+<select><option>aaaaaaaaaa<option>bbbbbbbbbb</select>
+
+
+</body>
+</html>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/rendering/replaced-elements/the-select-element/select-1-line-height.html b/LayoutTests/imported/w3c/web-platform-tests/html/rendering/replaced-elements/the-select-element/select-1-line-height.html
new file mode 100644 (file)
index 0000000..605a988
--- /dev/null
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML>
+<!--
+     Any copyright is dedicated to the Public Domain.
+     http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+  <meta charset="utf-8">
+  <title>Test: Combobox ignores CSS 'line-height'</title>
+  <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+  <link rel="match" href="select-1-line-height-ref.html">
+  <link rel="help" href="https://html.spec.whatwg.org/multipage/rendering.html#the-select-element-2">
+  <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1501908">
+  <style type="text/css">
+html,body {
+  color:black; background-color:white; font:16px/1 monospace;
+}
+
+select { line-height:100px; }
+
+  </style>
+</head>
+<body>
+
+<select><option>aaaaaaaaaa<option>bbbbbbbbbb</select>
+
+<script>
+document.body.offsetHeight;
+var cv = window.getComputedStyle(document.querySelector('select')).lineHeight;
+if (cv != "normal" && parseInt(cv) > 50) {
+  document.body.appendChild(document.createTextNode(
+    "FAIL: got computed line-height '" + cv + "', " +
+    "expected 'normal' or a length <= 50px"));
+}</script>
+
+</body>
+</html>
index c0a31ce..b0be638 100644 (file)
@@ -4,6 +4,6 @@ EVENT(canplaythrough)
 EVENT(seeked)
 
 ** Line height of the cue element should be 'normal' **
-EXPECTED (getComputedStyle(multiLineCueDisplayElement).lineHeight == '14px') OK
+EXPECTED (getComputedStyle(multiLineCueDisplayElement).lineHeight == 'normal') OK
 END OF TEST
 
index ea94b79..736cb19 100644 (file)
@@ -25,7 +25,7 @@
             multiLineCueDisplayElement = textTrackDisplayElement(video, 'display', 0);
 
             consoleWrite("<br>** Line height of the cue element should be 'normal' **");
-            testExpected("getComputedStyle(multiLineCueDisplayElement).lineHeight", "14px");
+            testExpected("getComputedStyle(multiLineCueDisplayElement).lineHeight", "normal");
 
             endTest();
         }
index 899dd43..f84aab4 100644 (file)
@@ -1,10 +1,10 @@
 This tests platform specific system font styles. If any of the styles appear in monospace the test fails.
-caption: normal normal normal normal 16px/18px "Liberation Sans"
-icon: normal normal normal normal 16px/18px "Liberation Sans"
-menu: normal normal normal normal 16px/18px "Liberation Sans"
-message-box: normal normal normal normal 16px/18px "Liberation Sans"
-small-caption: normal normal normal normal 16px/18px "Liberation Sans"
-status-bar: normal normal normal normal 16px/18px "Liberation Sans"
--webkit-mini-control: normal normal normal normal 16px/18px "Liberation Sans"
--webkit-small-control: normal normal normal normal 16px/18px "Liberation Sans"
--webkit-control: normal normal normal normal 16px/18px "Liberation Sans"
+caption: normal normal normal normal 16px/normal "Liberation Sans"
+icon: normal normal normal normal 16px/normal "Liberation Sans"
+menu: normal normal normal normal 16px/normal "Liberation Sans"
+message-box: normal normal normal normal 16px/normal "Liberation Sans"
+small-caption: normal normal normal normal 16px/normal "Liberation Sans"
+status-bar: normal normal normal normal 16px/normal "Liberation Sans"
+-webkit-mini-control: normal normal normal normal 16px/normal "Liberation Sans"
+-webkit-small-control: normal normal normal normal 16px/normal "Liberation Sans"
+-webkit-control: normal normal normal normal 16px/normal "Liberation Sans"
index 878b6f4..c6b1d0a 100644 (file)
@@ -110,7 +110,7 @@ kerning: 0;
 left: auto;
 letter-spacing: normal;
 lighting-color: rgb(255, 255, 255);
-line-height: 18px;
+line-height: normal;
 list-style-image: none;
 list-style-position: outside;
 list-style-type: disc;
index 5f42a2d..569783c 100644 (file)
@@ -109,7 +109,7 @@ kerning: 0
 left: auto
 letter-spacing: normal
 lighting-color: rgb(255, 255, 255)
-line-height: 18px
+line-height: normal
 list-style-image: none
 list-style-position: outside
 list-style-type: disc
index 00f5985..22fa96f 100644 (file)
@@ -218,7 +218,7 @@ rect: style.getPropertyValue(letter-spacing) : normal
 rect: style.getPropertyCSSValue(letter-spacing) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(lighting-color) : rgb(255, 255, 255)
 rect: style.getPropertyCSSValue(lighting-color) : [object CSSPrimitiveValue]
-rect: style.getPropertyValue(line-height) : 18px
+rect: style.getPropertyValue(line-height) : normal
 rect: style.getPropertyCSSValue(line-height) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(list-style-image) : none
 rect: style.getPropertyCSSValue(list-style-image) : [object CSSPrimitiveValue]
@@ -764,7 +764,7 @@ g: style.getPropertyValue(letter-spacing) : normal
 g: style.getPropertyCSSValue(letter-spacing) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(lighting-color) : rgb(255, 255, 255)
 g: style.getPropertyCSSValue(lighting-color) : [object CSSPrimitiveValue]
-g: style.getPropertyValue(line-height) : 18px
+g: style.getPropertyValue(line-height) : normal
 g: style.getPropertyCSSValue(line-height) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(list-style-image) : none
 g: style.getPropertyCSSValue(list-style-image) : [object CSSPrimitiveValue]
index 3caea8e..e900dc5 100644 (file)
@@ -1331,7 +1331,6 @@ webkit.org/b/178729 css3/shapes/shape-outside/values/shape-outside-polygon-004.h
 webkit.org/b/178729 css3/shapes/shape-outside/values/shape-outside-shape-arguments-000.html [ Failure ]
 
 webkit.org/b/178952 fast/css/font-calculated-value.html [ Failure ]
-webkit.org/b/178954 fast/css/font-shorthand-from-longhands.html [ Failure ]
 webkit.org/b/178955 fast/css/font-shorthand-line-height.html [ Failure ]
 webkit.org/b/178957 fast/css/getComputedStyle/computed-style-font.html [ Failure ]
 
index e28459d..0184a23 100644 (file)
@@ -4,7 +4,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 PASS getComputedStyle(document.getElementById("calc-percent"), null).lineHeight is getComputedStyle(document.getElementById("control"), null).lineHeight
-FAIL getComputedStyle(document.getElementById("calc-percent-pixels"), null).lineHeight should be 32px. Was 20px.
+FAIL getComputedStyle(document.getElementById("calc-percent-pixels"), null).lineHeight should be 32px. Was normal.
 PASS successfullyParsed is true
 
 TEST COMPLETE
index cb5ff0d..ba3e03e 100644 (file)
@@ -1,10 +1,10 @@
 This tests platform specific system font styles. If any of the styles appear in monospace the test fails.
-caption: normal normal normal normal 13px/16px CTFontEmphasizedUsage
-icon: normal normal normal normal 13px/16px CTFontEmphasizedUsage
-menu: normal normal normal normal 13px/16px CTFontEmphasizedUsage
-message-box: normal normal normal normal 13px/16px CTFontEmphasizedUsage
-small-caption: normal normal normal normal 13px/16px CTFontEmphasizedUsage
-status-bar: normal normal normal normal 13px/16px CTFontEmphasizedUsage
--webkit-mini-control: normal normal normal normal 13px/16px CTFontEmphasizedUsage
--webkit-small-control: normal normal normal normal 13px/16px CTFontEmphasizedUsage
--webkit-control: normal normal normal normal 13px/16px CTFontEmphasizedUsage
+caption: normal normal normal normal 13px/normal CTFontEmphasizedUsage
+icon: normal normal normal normal 13px/normal CTFontEmphasizedUsage
+menu: normal normal normal normal 13px/normal CTFontEmphasizedUsage
+message-box: normal normal normal normal 13px/normal CTFontEmphasizedUsage
+small-caption: normal normal normal normal 13px/normal CTFontEmphasizedUsage
+status-bar: normal normal normal normal 13px/normal CTFontEmphasizedUsage
+-webkit-mini-control: normal normal normal normal 13px/normal CTFontEmphasizedUsage
+-webkit-small-control: normal normal normal normal 13px/normal CTFontEmphasizedUsage
+-webkit-control: normal normal normal normal 13px/normal CTFontEmphasizedUsage
index 5ac5dd1..c6b1d0a 100644 (file)
@@ -110,7 +110,7 @@ kerning: 0;
 left: auto;
 letter-spacing: normal;
 lighting-color: rgb(255, 255, 255);
-line-height: 20px;
+line-height: normal;
 list-style-image: none;
 list-style-position: outside;
 list-style-type: disc;
index 9b1e5f5..569783c 100644 (file)
@@ -109,7 +109,7 @@ kerning: 0
 left: auto
 letter-spacing: normal
 lighting-color: rgb(255, 255, 255)
-line-height: 20px
+line-height: normal
 list-style-image: none
 list-style-position: outside
 list-style-type: disc
index f92396b..22fa96f 100644 (file)
@@ -218,7 +218,7 @@ rect: style.getPropertyValue(letter-spacing) : normal
 rect: style.getPropertyCSSValue(letter-spacing) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(lighting-color) : rgb(255, 255, 255)
 rect: style.getPropertyCSSValue(lighting-color) : [object CSSPrimitiveValue]
-rect: style.getPropertyValue(line-height) : 20px
+rect: style.getPropertyValue(line-height) : normal
 rect: style.getPropertyCSSValue(line-height) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(list-style-image) : none
 rect: style.getPropertyCSSValue(list-style-image) : [object CSSPrimitiveValue]
@@ -764,7 +764,7 @@ g: style.getPropertyValue(letter-spacing) : normal
 g: style.getPropertyCSSValue(letter-spacing) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(lighting-color) : rgb(255, 255, 255)
 g: style.getPropertyCSSValue(lighting-color) : [object CSSPrimitiveValue]
-g: style.getPropertyValue(line-height) : 20px
+g: style.getPropertyValue(line-height) : normal
 g: style.getPropertyCSSValue(line-height) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(list-style-image) : none
 g: style.getPropertyCSSValue(list-style-image) : [object CSSPrimitiveValue]
index a446e5b..5e25aad 100644 (file)
@@ -109,7 +109,7 @@ kerning: 0;
 left: auto;
 letter-spacing: normal;
 lighting-color: rgb(255, 255, 255);
-line-height: 18px;
+line-height: normal;
 list-style-image: none;
 list-style-position: outside;
 list-style-type: disc;
index 3571551..a38d999 100644 (file)
@@ -216,7 +216,7 @@ rect: style.getPropertyValue(letter-spacing) : normal
 rect: style.getPropertyCSSValue(letter-spacing) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(lighting-color) : rgb(255, 255, 255)
 rect: style.getPropertyCSSValue(lighting-color) : [object CSSPrimitiveValue]
-rect: style.getPropertyValue(line-height) : 18px
+rect: style.getPropertyValue(line-height) : normal
 rect: style.getPropertyCSSValue(line-height) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(list-style-image) : none
 rect: style.getPropertyCSSValue(list-style-image) : [object CSSPrimitiveValue]
@@ -760,7 +760,7 @@ g: style.getPropertyValue(letter-spacing) : normal
 g: style.getPropertyCSSValue(letter-spacing) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(lighting-color) : rgb(255, 255, 255)
 g: style.getPropertyCSSValue(lighting-color) : [object CSSPrimitiveValue]
-g: style.getPropertyValue(line-height) : 18px
+g: style.getPropertyValue(line-height) : normal
 g: style.getPropertyCSSValue(line-height) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(list-style-image) : none
 g: style.getPropertyCSSValue(list-style-image) : [object CSSPrimitiveValue]
index 7741cd8..bd8623e 100644 (file)
@@ -1,10 +1,10 @@
 This tests platform specific system font styles. If any of the styles appear in monospace the test fails.
-caption: normal normal normal normal 13px/16px system-ui
-icon: normal normal normal normal 13px/16px system-ui
-menu: normal normal normal normal 13px/16px -apple-menu
-message-box: normal normal normal normal 13px/16px system-ui
-small-caption: normal normal normal normal 11px/13px system-ui
-status-bar: normal normal normal normal 10px/12px -apple-status-bar
--webkit-mini-control: normal normal normal normal 9px/11px system-ui
--webkit-small-control: normal normal normal normal 11px/13px system-ui
--webkit-control: normal normal normal normal 13px/16px system-ui
+caption: normal normal normal normal 13px/normal system-ui
+icon: normal normal normal normal 13px/normal system-ui
+menu: normal normal normal normal 13px/normal -apple-menu
+message-box: normal normal normal normal 13px/normal system-ui
+small-caption: normal normal normal normal 11px/normal system-ui
+status-bar: normal normal normal normal 10px/normal -apple-status-bar
+-webkit-mini-control: normal normal normal normal 9px/normal system-ui
+-webkit-small-control: normal normal normal normal 11px/normal system-ui
+-webkit-control: normal normal normal normal 13px/normal system-ui
index 878b6f4..c6b1d0a 100644 (file)
@@ -110,7 +110,7 @@ kerning: 0;
 left: auto;
 letter-spacing: normal;
 lighting-color: rgb(255, 255, 255);
-line-height: 18px;
+line-height: normal;
 list-style-image: none;
 list-style-position: outside;
 list-style-type: disc;
index 5f42a2d..569783c 100644 (file)
@@ -109,7 +109,7 @@ kerning: 0
 left: auto
 letter-spacing: normal
 lighting-color: rgb(255, 255, 255)
-line-height: 18px
+line-height: normal
 list-style-image: none
 list-style-position: outside
 list-style-type: disc
index fa85a44..8e35ad4 100644 (file)
@@ -4,7 +4,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 Case without text size adjust.
-PASS window.getComputedStyle(testDivNoAdjust).getPropertyValue('line-height') is "23px"
+PASS window.getComputedStyle(testDivNoAdjust).getPropertyValue('line-height') is "normal"
 PASS window.getComputedStyle(testDivNoAdjust).getPropertyValue('font-size') is "20px"
 testDivNoAdjust.style['line-height'] = '1.6'
 PASS window.getComputedStyle(testDivNoAdjust).getPropertyValue('line-height') is "32px"
@@ -14,7 +14,7 @@ testDivNoAdjust.style['line-height'] = '12px'
 PASS window.getComputedStyle(testDivNoAdjust).getPropertyValue('line-height') is "12px"
 Case with text size adjust.
 Platform supports -webkit-text-size-adjust
-FAIL window.getComputedStyle(testDivAdjust).getPropertyValue('line-height') should be normal. Was 36px.
+PASS window.getComputedStyle(testDivAdjust).getPropertyValue('line-height') is "normal"
 PASS window.getComputedStyle(testDivAdjust).getPropertyValue('font-size') is "30px"
 testDivAdjust.style['line-height'] = '1.6'
 PASS window.getComputedStyle(testDivAdjust).getPropertyValue('line-height') is "48px"
index 00f5985..22fa96f 100644 (file)
@@ -218,7 +218,7 @@ rect: style.getPropertyValue(letter-spacing) : normal
 rect: style.getPropertyCSSValue(letter-spacing) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(lighting-color) : rgb(255, 255, 255)
 rect: style.getPropertyCSSValue(lighting-color) : [object CSSPrimitiveValue]
-rect: style.getPropertyValue(line-height) : 18px
+rect: style.getPropertyValue(line-height) : normal
 rect: style.getPropertyCSSValue(line-height) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(list-style-image) : none
 rect: style.getPropertyCSSValue(list-style-image) : [object CSSPrimitiveValue]
@@ -764,7 +764,7 @@ g: style.getPropertyValue(letter-spacing) : normal
 g: style.getPropertyCSSValue(letter-spacing) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(lighting-color) : rgb(255, 255, 255)
 g: style.getPropertyCSSValue(lighting-color) : [object CSSPrimitiveValue]
-g: style.getPropertyValue(line-height) : 18px
+g: style.getPropertyValue(line-height) : normal
 g: style.getPropertyCSSValue(line-height) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(list-style-image) : none
 g: style.getPropertyCSSValue(list-style-image) : [object CSSPrimitiveValue]
index e28459d..0184a23 100644 (file)
@@ -4,7 +4,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 PASS getComputedStyle(document.getElementById("calc-percent"), null).lineHeight is getComputedStyle(document.getElementById("control"), null).lineHeight
-FAIL getComputedStyle(document.getElementById("calc-percent-pixels"), null).lineHeight should be 32px. Was 20px.
+FAIL getComputedStyle(document.getElementById("calc-percent-pixels"), null).lineHeight should be 32px. Was normal.
 PASS successfullyParsed is true
 
 TEST COMPLETE
index c4d54a7..68b02cf 100644 (file)
@@ -1,10 +1,10 @@
 This tests platform specific system font styles. If any of the styles appear in monospace the test fails.
-caption: normal normal normal normal 12px/15px "Segoe UI"
-icon: normal normal normal normal 12px/15px "Segoe UI"
-menu: normal normal normal normal 12px/15px "Segoe UI"
-message-box: normal normal normal normal 12px/15px "Segoe UI"
-small-caption: normal normal normal normal 12px/15px "Segoe UI"
-status-bar: normal normal normal normal 12px/15px "Segoe UI"
--webkit-mini-control: normal normal normal normal 13px/16px "MS Shell Dlg"
--webkit-small-control: normal normal normal normal 13px/16px "MS Shell Dlg"
--webkit-control: normal normal normal normal 13px/16px "MS Shell Dlg"
+caption: normal normal normal normal 12px/normal "Segoe UI"
+icon: normal normal normal normal 12px/normal "Segoe UI"
+menu: normal normal normal normal 12px/normal "Segoe UI"
+message-box: normal normal normal normal 12px/normal "Segoe UI"
+small-caption: normal normal normal normal 12px/normal "Segoe UI"
+status-bar: normal normal normal normal 12px/normal "Segoe UI"
+-webkit-mini-control: normal normal normal normal 13px/normal "MS Shell Dlg"
+-webkit-small-control: normal normal normal normal 13px/normal "MS Shell Dlg"
+-webkit-control: normal normal normal normal 13px/normal "MS Shell Dlg"
index 46f6565..4ab4622 100644 (file)
@@ -1,10 +1,10 @@
 This tests platform specific system font styles. If any of the styles appear in monospace the test fails.
-caption: normal normal normal normal 13px/15px monospace
-icon: normal normal normal normal 13px/15px monospace
-menu: normal normal normal normal 13px/15px monospace
-message-box: normal normal normal normal 13px/15px monospace
-small-caption: normal normal normal normal 13px/15px monospace
-status-bar: normal normal normal normal 13px/15px monospace
--webkit-mini-control: normal normal normal normal 13px/15px monospace
--webkit-small-control: normal normal normal normal 13px/15px monospace
--webkit-control: normal normal normal normal 13px/15px monospace
+caption: normal normal normal normal 13px/normal monospace
+icon: normal normal normal normal 13px/normal monospace
+menu: normal normal normal normal 13px/normal monospace
+message-box: normal normal normal normal 13px/normal monospace
+small-caption: normal normal normal normal 13px/normal monospace
+status-bar: normal normal normal normal 13px/normal monospace
+-webkit-mini-control: normal normal normal normal 13px/normal monospace
+-webkit-small-control: normal normal normal normal 13px/normal monospace
+-webkit-control: normal normal normal normal 13px/normal monospace
index 878b6f4..c6b1d0a 100644 (file)
@@ -110,7 +110,7 @@ kerning: 0;
 left: auto;
 letter-spacing: normal;
 lighting-color: rgb(255, 255, 255);
-line-height: 18px;
+line-height: normal;
 list-style-image: none;
 list-style-position: outside;
 list-style-type: disc;
index 5f42a2d..569783c 100644 (file)
@@ -109,7 +109,7 @@ kerning: 0
 left: auto
 letter-spacing: normal
 lighting-color: rgb(255, 255, 255)
-line-height: 18px
+line-height: normal
 list-style-image: none
 list-style-position: outside
 list-style-type: disc
index 00f5985..22fa96f 100644 (file)
@@ -218,7 +218,7 @@ rect: style.getPropertyValue(letter-spacing) : normal
 rect: style.getPropertyCSSValue(letter-spacing) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(lighting-color) : rgb(255, 255, 255)
 rect: style.getPropertyCSSValue(lighting-color) : [object CSSPrimitiveValue]
-rect: style.getPropertyValue(line-height) : 18px
+rect: style.getPropertyValue(line-height) : normal
 rect: style.getPropertyCSSValue(line-height) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(list-style-image) : none
 rect: style.getPropertyCSSValue(list-style-image) : [object CSSPrimitiveValue]
@@ -764,7 +764,7 @@ g: style.getPropertyValue(letter-spacing) : normal
 g: style.getPropertyCSSValue(letter-spacing) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(lighting-color) : rgb(255, 255, 255)
 g: style.getPropertyCSSValue(lighting-color) : [object CSSPrimitiveValue]
-g: style.getPropertyValue(line-height) : 18px
+g: style.getPropertyValue(line-height) : normal
 g: style.getPropertyCSSValue(line-height) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(list-style-image) : none
 g: style.getPropertyCSSValue(list-style-image) : [object CSSPrimitiveValue]
index 3571551..a38d999 100644 (file)
@@ -216,7 +216,7 @@ rect: style.getPropertyValue(letter-spacing) : normal
 rect: style.getPropertyCSSValue(letter-spacing) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(lighting-color) : rgb(255, 255, 255)
 rect: style.getPropertyCSSValue(lighting-color) : [object CSSPrimitiveValue]
-rect: style.getPropertyValue(line-height) : 18px
+rect: style.getPropertyValue(line-height) : normal
 rect: style.getPropertyCSSValue(line-height) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(list-style-image) : none
 rect: style.getPropertyCSSValue(list-style-image) : [object CSSPrimitiveValue]
@@ -760,7 +760,7 @@ g: style.getPropertyValue(letter-spacing) : normal
 g: style.getPropertyCSSValue(letter-spacing) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(lighting-color) : rgb(255, 255, 255)
 g: style.getPropertyCSSValue(lighting-color) : [object CSSPrimitiveValue]
-g: style.getPropertyValue(line-height) : 18px
+g: style.getPropertyValue(line-height) : normal
 g: style.getPropertyCSSValue(line-height) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(list-style-image) : none
 g: style.getPropertyCSSValue(list-style-image) : [object CSSPrimitiveValue]
index 5420ff5..de28670 100644 (file)
@@ -1,3 +1,22 @@
+2019-09-09  Joonghun Park  <jh718.park@samsung.com>
+
+        getComputedStyle for line-height: normal should return the keyword instead of a length
+        https://bugs.webkit.org/show_bug.cgi?id=201296
+
+        Reviewed by Ryosuke Niwa.
+
+        Per https://github.com/w3c/csswg-drafts/issues/3749,
+        Gecko and Blink has this behavior already.
+
+        This patch makes WebKit has the same behavior with them.
+
+        Tests: imported/w3c/web-platform-tests/css/css-inline/parsing/line-height-computed.html
+               imported/w3c/web-platform-tests/css/cssom/getComputedStyle-line-height.html
+               imported/w3c/web-platform-tests/html/rendering/replaced-elements/the-select-element/select-1-line-height.html
+
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::lineHeightFromStyle):
+
 2019-09-09  Alex Christensen  <achristensen@webkit.org>
 
         Disable TLS 1.0 and 1.1 in WebSockets
index 60b6a52..02e8985 100644 (file)
@@ -2022,8 +2022,8 @@ static Ref<CSSValue> fontFamilyFromStyle(const RenderStyle& style)
 static Ref<CSSPrimitiveValue> lineHeightFromStyle(const RenderStyle& style)
 {
     Length length = style.lineHeight();
-    if (length.isNegative()) // If true, line-height not set; use the font's line spacing.
-        return zoomAdjustedPixelValue(style.fontMetrics().floatLineSpacing(), style);
+    if (length.isNegative())
+        return CSSValuePool::singleton().createIdentifierValue(CSSValueNormal);
     if (length.isPercent()) {
         // This is imperfect, because it doesn't include the zoom factor and the real computation
         // for how high to be in pixels does include things like minimum font size and the zoom factor.