Title: [142152] trunk
Revision
142152
Author
[email protected]
Date
2013-02-07 10:48:39 -0800 (Thu, 07 Feb 2013)

Log Message

CSS 2.1 failure: floats-149 fails
https://bugs.webkit.org/show_bug.cgi?id=95772

Reviewed by David Hyatt.

Source/WebCore:

Treat inlines that contain nothing but empty inlines as empty too so that they get a linebox.

Tests: fast/inline/inline-with-empty-inline-children.html
       css2.1/20110323/floats-149.htm

* rendering/InlineIterator.h:
(WebCore::isEmptyInline):
* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlock::layoutRunsAndFloatsInRange): Now that empty inlines get a linebox any out-of-flow
objects inside an empty inline (on a line that is otherwise empty) won't get positioned while skipping
through leading whitespace.

LayoutTests:

* css2.1/20110323/floats-149-expected.html: Added.
* css2.1/20110323/floats-149.htm: Added.
* fast/inline/inline-with-empty-inline-children-expected.txt: Added.
* fast/inline/inline-with-empty-inline-children.html: Added.
* platform/chromium-win/fast/text/international/bidi-ignored-for-first-child-inline-expected.txt:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (142151 => 142152)


--- trunk/LayoutTests/ChangeLog	2013-02-07 18:39:10 UTC (rev 142151)
+++ trunk/LayoutTests/ChangeLog	2013-02-07 18:48:39 UTC (rev 142152)
@@ -1,3 +1,16 @@
+2013-01-27  Robert Hogan  <[email protected]>
+
+        CSS 2.1 failure: floats-149 fails
+        https://bugs.webkit.org/show_bug.cgi?id=95772
+
+        Reviewed by David Hyatt.
+
+        * css2.1/20110323/floats-149-expected.html: Added.
+        * css2.1/20110323/floats-149.htm: Added.
+        * fast/inline/inline-with-empty-inline-children-expected.txt: Added.
+        * fast/inline/inline-with-empty-inline-children.html: Added.
+        * platform/chromium-win/fast/text/international/bidi-ignored-for-first-child-inline-expected.txt:
+
 2013-02-07  Max Vujovic  <[email protected]>
 
         [CSS Shaders] Add WebKitCSSFilterRule to DOMWindow.idl

Added: trunk/LayoutTests/css2.1/20110323/floats-149-expected.html (0 => 142152)


--- trunk/LayoutTests/css2.1/20110323/floats-149-expected.html	                        (rev 0)
+++ trunk/LayoutTests/css2.1/20110323/floats-149-expected.html	2013-02-07 18:48:39 UTC (rev 142152)
@@ -0,0 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+
+ <head>
+
+  <title>CSS Reftest Reference</title>
+
+  <link rel="author" title="Gérard Talbot" href=""
+
+  <style type="text/css">
+  table
+  {
+  border-spacing: 0px;
+  table-layout: fixed;
+  width: 100%;  
+  }
+  
+  td
+  {
+  padding: 0px;
+  vertical-align: top;
+  width: 50%;
+  }  
+  
+  div {background-color: green;}
+  </style>
+
+ </head>
+
+ <body>
+ 
+  <table>
+    <tr>
+      <td>There should be a green bar to the right: ⇨</td>
+      <td><div>&nbsp;</div></td>
+    </tr>
+  </table>
+
+ </body>
+</html>
\ No newline at end of file
Property changes on: trunk/LayoutTests/css2.1/20110323/floats-149-expected.html
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/css2.1/20110323/floats-149.htm (0 => 142152)


--- trunk/LayoutTests/css2.1/20110323/floats-149.htm	                        (rev 0)
+++ trunk/LayoutTests/css2.1/20110323/floats-149.htm	2013-02-07 18:48:39 UTC (rev 142152)
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+ <head> 
+  <title>CSS Test: Empty inlines being displaced by floats</title>
+  <link rel="author" title="Ian Hickson" href=""
+  <link rel="reviewer" title="Gérard Talbot" href="" <!-- 2012-07-01 -->
+  <link rel="alternate" href="" type="text/html">
+  <link rel="help" href=""
+  <link rel="match" href=""
+
+  <style type="text/css">
+    .block { display: block; background: green; }
+    .inline { display: inline; margin-left: 40px; }
+    span { float: left; width: 50%; background: white; }
+  </style> 
+ </head> 
+ <body> 
+  <div class="block">
+   <div class="inline"> 
+    <span>There should be a green bar to the right: ⇨</span>
+    <span></span> <!-- this float should be on the second "line" -->
+   </div> 
+  </div>
+ </body>
+</html>
\ No newline at end of file
Property changes on: trunk/LayoutTests/css2.1/20110323/floats-149.htm
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/fast/inline/inline-with-empty-inline-children-expected.txt (0 => 142152)


--- trunk/LayoutTests/fast/inline/inline-with-empty-inline-children-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/inline/inline-with-empty-inline-children-expected.txt	2013-02-07 18:48:39 UTC (rev 142152)
@@ -0,0 +1,9 @@
+https://bugs.webkit.org/show_bug.cgi?id=95772: There should be six green bars below with a PASS in each.
+
+ PASS
+ PASS
+ PASS
+ PASS
+ PASS
+ PASS
+
Property changes on: trunk/LayoutTests/fast/inline/inline-with-empty-inline-children-expected.txt
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/fast/inline/inline-with-empty-inline-children.html (0 => 142152)


--- trunk/LayoutTests/fast/inline/inline-with-empty-inline-children.html	                        (rev 0)
+++ trunk/LayoutTests/fast/inline/inline-with-empty-inline-children.html	2013-02-07 18:48:39 UTC (rev 142152)
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+ <head> 
+  <style>
+    .block { display: block; background: green; }
+    .inline { display: inline; margin-left: 40px; font: 30px/1 Ahem;}
+    span { width: 50%; background: white; }
+    .absolute { position: absolute; }
+    .float { float: left; }
+  </style> 
+  <script src=""
+ </head> 
+ <body> 
+  <p> https://bugs.webkit.org/show_bug.cgi?id=95772: There should be six green bars below with a PASS in each. </p>
+  <div class="block">
+   <div class="inline" data-expected-height="30"> <span class="absolute"></span> <span class="absolute"></span> </div> 
+  </div>
+  <div class="block">
+   <div class="inline" data-expected-height="30"><span class="absolute"></span><span class="absolute"></span></div> 
+  </div>
+  <div class="block">
+   <div class="inline" data-expected-height="30"><span class="float"></span><span class="float"></span></div>
+  </div>
+  <div class="block">
+   <div class="inline" data-expected-height="30"> <span class="float"></span> <span class="float"></span></div>
+  </div>
+  <div class="block">
+   <div class="inline" data-expected-height="30"><span></span><span></span></div>
+  </div>
+  <div class="block">
+   <div class="inline" data-expected-height="30"> <span></span> <span></span></div>
+  </div>
+  <script>
+   checkLayout('body > div > div')
+  </script>
+ </body>
+</html>
Property changes on: trunk/LayoutTests/fast/inline/inline-with-empty-inline-children.html
___________________________________________________________________

Added: svn:eol-style

Modified: trunk/LayoutTests/platform/chromium-win/fast/text/international/bidi-ignored-for-first-child-inline-expected.txt (142151 => 142152)


--- trunk/LayoutTests/platform/chromium-win/fast/text/international/bidi-ignored-for-first-child-inline-expected.txt	2013-02-07 18:39:10 UTC (rev 142151)
+++ trunk/LayoutTests/platform/chromium-win/fast/text/international/bidi-ignored-for-first-child-inline-expected.txt	2013-02-07 18:48:39 UTC (rev 142152)
@@ -107,7 +107,7 @@
         RenderText {#text} at (0,0) size 29x19
           text run at (0,0) width 19 RTL: "\x{5D3}\x{5D4}\x{5D5}"
           text run at (19,0) width 10: "(["
-        RenderInline {SPAN} at (0,0) size 0x19
+        RenderInline {SPAN} at (0,0) size 20x19
           RenderInline {SPAN} at (0,0) size 0x19
         RenderText {#text} at (29,0) size 20x19
           text run at (29,0) width 20 RTL: "\x{5D0}\x{5D1}\x{5D2}"

Modified: trunk/LayoutTests/platform/efl/TestExpectations (142151 => 142152)


--- trunk/LayoutTests/platform/efl/TestExpectations	2013-02-07 18:39:10 UTC (rev 142151)
+++ trunk/LayoutTests/platform/efl/TestExpectations	2013-02-07 18:48:39 UTC (rev 142152)
@@ -1866,3 +1866,6 @@
 webkit.org/b/108370 editing/spelling/spelling-with-punctuation-selection.html [ Skip ]
 webkit.org/b/108370 editing/spelling/spelling-with-underscore-selection.html [ Skip ]
 webkit.org/b/108370 editing/spelling/spelling-with-whitespace-selection.html [ Skip ]
+
+# Rebaseline required after https://webkit.org/b/95772
+webkit.org/b/109209 fast/text/international/bidi-ignored-for-first-child-inline.html [ Failure ]

Modified: trunk/LayoutTests/platform/gtk/TestExpectations (142151 => 142152)


--- trunk/LayoutTests/platform/gtk/TestExpectations	2013-02-07 18:39:10 UTC (rev 142151)
+++ trunk/LayoutTests/platform/gtk/TestExpectations	2013-02-07 18:48:39 UTC (rev 142152)
@@ -74,6 +74,9 @@
 webkit.org/b/107567 tables/mozilla/bugs/bug1188.html [ Failure ] 
 webkit.org/b/107567 editing/selection/extend-by-sentence-001.html [ Failure ] 
 webkit.org/b/107567 svg/carto.net/combobox.svg [ Failure ] 
+
+# Rebaseline required after https://webkit.org/b/95772
+webkit.org/b/109209 fast/text/international/bidi-ignored-for-first-child-inline.html [ Failure ]
 #////////////////////////////////////////////////////////////////////////////////////////
 # Expected failures
 #////////////////////////////////////////////////////////////////////////////////////////

Modified: trunk/LayoutTests/platform/mac/TestExpectations (142151 => 142152)


--- trunk/LayoutTests/platform/mac/TestExpectations	2013-02-07 18:39:10 UTC (rev 142151)
+++ trunk/LayoutTests/platform/mac/TestExpectations	2013-02-07 18:48:39 UTC (rev 142152)
@@ -1331,3 +1331,7 @@
 
 webkit.org/b/108257 [ Debug ] compositing/overflow/composited-scrolling-creates-a-stacking-container.html [ Crash ]
 webkit.org/b/108257 [ Debug ] compositing/overflow/automatically-opt-into-composited-scrolling.html [ Crash ]
+
+
+# Rebaseline required after https://webkit.org/b/95772
+webkit.org/b/109209 fast/text/international/bidi-ignored-for-first-child-inline.html [ Failure ]

Modified: trunk/LayoutTests/platform/qt/TestExpectations (142151 => 142152)


--- trunk/LayoutTests/platform/qt/TestExpectations	2013-02-07 18:39:10 UTC (rev 142151)
+++ trunk/LayoutTests/platform/qt/TestExpectations	2013-02-07 18:48:39 UTC (rev 142152)
@@ -2617,3 +2617,6 @@
 webkit.org/b/91665 fast/dynamic/absolute-positioned-to-static-positioned.html [ Skip ]
 webkit.org/b/91665 fast/dynamic/floating-to-non-floating.html [ Skip ]
 webkit.org/b/91665 fast/dynamic/static-positioned-to-absolute-positioned.html [ Skip ]
+
+# Rebaseline required after https://webkit.org/b/95772
+webkit.org/b/109209 fast/text/international/bidi-ignored-for-first-child-inline.html [ Failure ]

Modified: trunk/Source/WebCore/ChangeLog (142151 => 142152)


--- trunk/Source/WebCore/ChangeLog	2013-02-07 18:39:10 UTC (rev 142151)
+++ trunk/Source/WebCore/ChangeLog	2013-02-07 18:48:39 UTC (rev 142152)
@@ -1,3 +1,22 @@
+2013-01-27  Robert Hogan  <[email protected]>
+
+        CSS 2.1 failure: floats-149 fails
+        https://bugs.webkit.org/show_bug.cgi?id=95772
+
+        Reviewed by David Hyatt.
+
+        Treat inlines that contain nothing but empty inlines as empty too so that they get a linebox.
+
+        Tests: fast/inline/inline-with-empty-inline-children.html
+               css2.1/20110323/floats-149.htm
+
+        * rendering/InlineIterator.h:
+        (WebCore::isEmptyInline):
+        * rendering/RenderBlockLineLayout.cpp:
+        (WebCore::RenderBlock::layoutRunsAndFloatsInRange): Now that empty inlines get a linebox any out-of-flow
+        objects inside an empty inline (on a line that is otherwise empty) won't get positioned while skipping 
+        through leading whitespace. 
+
 2013-02-07  [email protected]  <[email protected]>
 
         [WinCairo] Compile fix after r141981

Modified: trunk/Source/WebCore/rendering/InlineIterator.h (142151 => 142152)


--- trunk/Source/WebCore/rendering/InlineIterator.h	2013-02-07 18:39:10 UTC (rev 142151)
+++ trunk/Source/WebCore/rendering/InlineIterator.h	2013-02-07 18:48:39 UTC (rev 142152)
@@ -181,10 +181,16 @@
     if (!object->isRenderInline())
         return false;
 
-    if (!object->firstChild())
-        return true;
+    for (RenderObject* curr = object->firstChild(); curr; curr = curr->nextSibling()) {
+        if (curr->isFloatingOrOutOfFlowPositioned())
+            continue;
+        if (curr->isText() && toRenderText(curr)->isAllCollapsibleWhitespace())
+            continue;
 
-    return object->firstChild()->isText() && (object->firstChild() == object->lastChild()) && toRenderText(object->firstChild())->isAllCollapsibleWhitespace();
+        if (!isEmptyInline(curr))
+            return false;
+    }
+    return true;
 }
 
 // FIXME: This function is misleadingly named. It has little to do with bidi.

Modified: trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp (142151 => 142152)


--- trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp	2013-02-07 18:39:10 UTC (rev 142151)
+++ trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp	2013-02-07 18:48:39 UTC (rev 142152)
@@ -1616,10 +1616,12 @@
                         lineBox->setContainingRegion(regionAtBlockOffset(lineBox->lineTopWithLeading()));
                 }
             }
+        }
 
-            for (size_t i = 0; i < lineBreaker.positionedObjects().size(); ++i)
-                setStaticPositions(this, lineBreaker.positionedObjects()[i]);
+        for (size_t i = 0; i < lineBreaker.positionedObjects().size(); ++i)
+            setStaticPositions(this, lineBreaker.positionedObjects()[i]);
 
+        if (!layoutState.lineInfo().isEmpty()) {
             layoutState.lineInfo().setFirstLine(false);
             newLine(lineBreaker.clear());
         }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to