Title: [148658] trunk
Revision
148658
Author
[email protected]
Date
2013-04-17 21:25:46 -0700 (Wed, 17 Apr 2013)

Log Message

[css3-text] Rendering -webkit-hanging value for text-indent from css3-text
https://bugs.webkit.org/show_bug.cgi?id=114663

Patch by Jaehun Lim <[email protected]> on 2013-04-17
Reviewed by Beth Dakin.

This patch is the rendering part to support hanging value for text-indent.
"hanging" means "Inverts which lines are affected."
It's prefixed and guarded by CSS3_TEXT flag.

Spec: http://dev.w3.org/csswg/css-text/#text-indent

Source/WebCore:

Test: fast/css3-text/css3-text-indent/text-indent-each-line-hanging.html

* rendering/RenderBlockLineLayout.cpp:
(WebCore::requiresIndent): Inverted the return value when "-webkit-hanging" is applied.

LayoutTests:

Renamed and updated the existing testcases.

* fast/css3-text/css3-text-indent/text-indent-each-line-hanging-expected.html: Renamed from LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line-expected.html
* fast/css3-text/css3-text-indent/text-indent-each-line-hanging.html: Renamed from LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line.html.

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (148657 => 148658)


--- trunk/LayoutTests/ChangeLog	2013-04-18 04:02:27 UTC (rev 148657)
+++ trunk/LayoutTests/ChangeLog	2013-04-18 04:25:46 UTC (rev 148658)
@@ -1,3 +1,21 @@
+2013-04-17  Jaehun Lim  <[email protected]>
+
+        [css3-text] Rendering -webkit-hanging value for text-indent from css3-text
+        https://bugs.webkit.org/show_bug.cgi?id=114663
+
+        Reviewed by Beth Dakin.
+
+        This patch is the rendering part to support hanging value for text-indent.
+        "hanging" means "Inverts which lines are affected."
+        It's prefixed and guarded by CSS3_TEXT flag.
+
+        Spec: http://dev.w3.org/csswg/css-text/#text-indent
+
+        Renamed and updated the existing testcases.
+       
+        * fast/css3-text/css3-text-indent/text-indent-each-line-hanging-expected.html: Renamed from LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line-expected.html
+        * fast/css3-text/css3-text-indent/text-indent-each-line-hanging.html: Renamed from LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line.html.
+
 2013-04-17  James Craig  <[email protected]>
 
         AX: aria-level does not override implicit level on h1, h2, etc

Deleted: trunk/LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line-expected.html (148657 => 148658)


--- trunk/LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line-expected.html	2013-04-18 04:02:27 UTC (rev 148657)
+++ trunk/LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line-expected.html	2013-04-18 04:25:46 UTC (rev 148658)
@@ -1,28 +0,0 @@
-<html>
-<head>
-    <title>[css3-text] text-indent</title>
-    <style>
-    div { width:80px; font: 10px Ahem; background-color:lightgray; }
-    .normal { text-indent: 4em; }
-    .indent { color: blue; }
-    .eachline { padding-left:4em; }
-    </style>
-</head
-<body>
-<div class="normal">
-<span class="indent">xxxx</span><br>xxxx<br>xxxx
-</div>
-<br>
-<div class="normal">
-<span class="indent">xxxx</span> xxxx xxxx
-</div>
-<br>
-<div class="normal">
-<span class="indent">xxxx</span><br><span class="indent eachline">xxxx</span><br><span class="indent eachline">xxxx</span>
-</div>
-<br>
-<div class="normal">
-<span class="indent">xxxx</span> xxxx<br><span class="indent eachline">xxxx</span>
-</div>
-</body>
-</html>

Added: trunk/LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line-hanging-expected.html (0 => 148658)


--- trunk/LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line-hanging-expected.html	                        (rev 0)
+++ trunk/LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line-hanging-expected.html	2013-04-18 04:25:46 UTC (rev 148658)
@@ -0,0 +1,42 @@
+<html>
+<head>
+    <title>[css3-text] text-indent</title>
+    <style>
+    div { width:80px; font: 10px Ahem; background-color:lightgray; }
+    .indent { color: blue; padding-left:4em; }
+    </style>
+</head>
+<body>
+<div>
+<span class="indent">xxxx</span><br>xxxx<br>xxxx
+</div>
+<br>
+<div>
+<span class="indent">xxxx</span> xxxx xxxx
+</div>
+<br>
+<div>
+<span class="indent">xxxx</span><br><span class="indent">xxxx</span><br><span class="indent">xxxx</span>
+</div>
+<br>
+<div>
+<span class="indent">xxxx</span> xxxx<br><span class="indent">xxxx</span>
+</div>
+<br>
+<div>
+xxxx<br><span class="indent">xxxx</span><br><span class="indent">xxxx</span>
+</div>
+<br>
+<div>
+xxxx <span class="indent">xxxx</span> <span class="indent">xxxx</span>
+</div>
+<br>
+<div>
+xxxx<br>xxxx<br>xxxx
+</div>
+<br>
+<div>
+xxxx <span class="indent">xxxx</span><br>xxxx
+</div>
+</body>
+</html>

Copied: trunk/LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line-hanging.html (from rev 148657, trunk/LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line.html) (0 => 148658)


--- trunk/LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line-hanging.html	                        (rev 0)
+++ trunk/LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line-hanging.html	2013-04-18 04:25:46 UTC (rev 148658)
@@ -0,0 +1,59 @@
+<html>
+<head>
+    <title>[css3-text] text-indent</title>
+    <style>
+    div { width:80px; font: 10px Ahem; background-color:lightgray; }
+    .normal { text-indent: 4em; }
+    .eachline { text-indent: 4em -webkit-each-line; }
+    .hanging { text-indent: 4em -webkit-hanging; }
+    .eachlinehanging { text-indent: 4em -webkit-each-line -webkit-hanging; }
+    .indent { color: blue; }
+    </style>
+</head
+<body>
+<!--
+all black boxes should be left-aligned.
+all blue boxes should be right-aligned.
+-->
+
+<!-- normal text-indent -->
+<div class="normal">
+<span class="indent">xxxx</span> xxxx<br>xxxx
+</div>
+<br>
+<!-- -webkit-each-line with a soft wrap break -->
+<div class="eachline">
+<span class="indent">xxxx</span> xxxx xxxx
+</div>
+<br>
+<!-- -webkit-each-line with a forced line break -->
+<div class="eachline">
+<span class="indent">xxxx</span><br><span class="indent">xxxx</span><br><span class="indent">xxxx</span>
+</div>
+<br>
+<!-- -webkit-each-line with a soft wrap break and a forced line break -->
+<div class="eachline">
+<span class="indent">xxxx</span> xxxx<br><span class="indent">xxxx</span>
+</div>
+<br>
+<!-- normal text-indent with -webkit-hanging -->
+<div class="hanging">
+xxxx <span class="indent">xxxx</span><br><span class="indent">xxxx</span>
+</div>
+<br>
+<!-- -webkit-each-line and -webkit-hanging with a soft wrap break -->
+<div class="eachlinehanging">
+xxxx <span class="indent">xxxx</span> <span class="indent">xxxx</span>
+</div>
+<br>
+<!-- -webkit-each-line and -webkit-hanging with a forced line break -->
+<div class="eachlinehanging">
+xxxx<br>xxxx<br>xxxx
+</div>
+<br>
+<!-- -webkit-each-line and -webkit-hanging with a soft wrap break and a forced line break -->
+<div class="eachlinehanging">
+xxxx <span class="indent">xxxx</span><br>xxxx
+</div>
+</body>
+</html>

Deleted: trunk/LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line.html (148657 => 148658)


--- trunk/LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line.html	2013-04-18 04:02:27 UTC (rev 148657)
+++ trunk/LayoutTests/fast/css3-text/css3-text-indent/text-indent-each-line.html	2013-04-18 04:25:46 UTC (rev 148658)
@@ -1,37 +0,0 @@
-<html>
-<head>
-    <title>[css3-text] text-indent</title>
-    <style>
-    div { width:80px; font: 10px Ahem; background-color:lightgray; }
-    .normal { text-indent: 4em; }
-    .eachline { width:80px; text-indent: 4em -webkit-each-line; }
-    .indent { color: blue; }
-    </style>
-</head
-<body>
-<!--
-all black boxes should be left-aligned.
-all blue boxes should be right-aligned.
--->
-
-<!-- normal text-indent -->
-<div class="normal">
-<span class="indent">xxxx</span><br>xxxx<br>xxxx
-</div>
-<br>
-<!-- -webkit-each-line with a soft wrap break -->
-<div class="eachline">
-<span class="indent">xxxx</span> xxxx xxxx
-</div>
-<br>
-<!-- -webkit-each-line with a forced line break -->
-<div class="eachline">
-<span class="indent">xxxx</span><br><span class="indent">xxxx</span><br><span class="indent">xxxx</span>
-</div>
-<br>
-<!-- -webkit-each-line with a soft wrap break and a forced line break -->
-<div class="eachline">
-<span class="indent">xxxx</span> xxxx<br><span class="indent">xxxx</span>
-</div>
-</body>
-</html>

Modified: trunk/Source/WebCore/ChangeLog (148657 => 148658)


--- trunk/Source/WebCore/ChangeLog	2013-04-18 04:02:27 UTC (rev 148657)
+++ trunk/Source/WebCore/ChangeLog	2013-04-18 04:25:46 UTC (rev 148658)
@@ -1,3 +1,21 @@
+2013-04-17  Jaehun Lim  <[email protected]>
+
+        [css3-text] Rendering -webkit-hanging value for text-indent from css3-text
+        https://bugs.webkit.org/show_bug.cgi?id=114663
+
+        Reviewed by Beth Dakin.
+
+        This patch is the rendering part to support hanging value for text-indent.
+        "hanging" means "Inverts which lines are affected."
+        It's prefixed and guarded by CSS3_TEXT flag.
+
+        Spec: http://dev.w3.org/csswg/css-text/#text-indent
+
+        Test: fast/css3-text/css3-text-indent/text-indent-each-line-hanging.html
+
+        * rendering/RenderBlockLineLayout.cpp:
+        (WebCore::requiresIndent): Inverted the return value when "-webkit-hanging" is applied.
+
 2013-04-17  James Craig  <[email protected]>
 
         AX: aria-level does not override implicit level on h1, h2, etc

Modified: trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp (148657 => 148658)


--- trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp	2013-04-18 04:02:27 UTC (rev 148657)
+++ trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp	2013-04-18 04:25:46 UTC (rev 148658)
@@ -995,16 +995,20 @@
 
 static IndentTextOrNot requiresIndent(bool isFirstLine, bool isAfterHardLineBreak, RenderStyle* style)
 {
+    IndentTextOrNot shouldIndentText = DoNotIndentText;
     if (isFirstLine)
-        return IndentText;
+        shouldIndentText = IndentText;
 #if ENABLE(CSS3_TEXT)
-    if (isAfterHardLineBreak && style->textIndentLine() == TextIndentEachLine) 
-        return IndentText;
+    else if (isAfterHardLineBreak && style->textIndentLine() == TextIndentEachLine) 
+        shouldIndentText = IndentText;
+
+    if (style->textIndentType() == TextIndentHanging)
+        shouldIndentText = shouldIndentText == IndentText ? DoNotIndentText : IndentText;
 #else
     UNUSED_PARAM(isAfterHardLineBreak);
     UNUSED_PARAM(style);
 #endif
-    return DoNotIndentText;
+    return shouldIndentText;
 }
 
 static void updateLogicalInlinePositions(RenderBlock* block, float& lineLogicalLeft, float& lineLogicalRight, float& availableLogicalWidth, bool firstLine, IndentTextOrNot shouldIndentText, LayoutUnit boxLogicalHeight)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to