Diff
Modified: trunk/LayoutTests/ChangeLog (124294 => 124295)
--- trunk/LayoutTests/ChangeLog 2012-08-01 03:56:02 UTC (rev 124294)
+++ trunk/LayoutTests/ChangeLog 2012-08-01 04:03:52 UTC (rev 124295)
@@ -1,3 +1,26 @@
+2012-07-31 Emil A Eklund <[email protected]>
+
+ Float imprecision causes incorrect wrapping in LineLayout with subpixel layout
+ https://bugs.webkit.org/show_bug.cgi?id=92778
+
+ Reviewed by Eric Seidel.
+
+ Add test ensuring that an inline block isn't wrapped incorrectly.
+
+ * fast/sub-pixel/inline-block-should-not-wrap-expected.html: Added.
+ * fast/sub-pixel/inline-block-should-not-wrap.html: Added.
+ * platform/mac-lion/Skipped:
+ * platform/mac-snowleopard/Skipped:
+ * platform/mac-wk2/Skipped:
+ * platform/mac/Skipped:
+ * platform/qt-4.8/Skipped:
+ * platform/qt/Skipped:
+ * platform/win-wk2/Skipped:
+ * platform/win-xp/Skipped:
+ * platform/win/Skipped:
+ * platform/wincairo/Skipped:
+ * platform/wk2/Skipped:
+
2012-08-01 Joone Hur <[email protected]>
Unreviewed EFL gardening.
Added: trunk/LayoutTests/fast/sub-pixel/inline-block-should-not-wrap-expected.html (0 => 124295)
--- trunk/LayoutTests/fast/sub-pixel/inline-block-should-not-wrap-expected.html (rev 0)
+++ trunk/LayoutTests/fast/sub-pixel/inline-block-should-not-wrap-expected.html 2012-08-01 04:03:52 UTC (rev 124295)
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style>
+ body {
+ font-size: 0.8em;
+ }
+
+ ul {
+ display: inline;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ }
+
+ li {
+ display: inline-block;
+ border-left: 1px solid silver;
+ padding-left: 0.5em;
+ white-space: nowrap;
+ }
+
+ </style>
+ </head>
+
+ <body>
+ <ul>
+ <li><a href="" of North America</a></li>
+ <li><a href="" French loanwords</a></li>
+ </ul>
+ <p>
+ The two links above should not wrap.
+ </p>
+ </body>
+</html>
Added: trunk/LayoutTests/fast/sub-pixel/inline-block-should-not-wrap.html (0 => 124295)
--- trunk/LayoutTests/fast/sub-pixel/inline-block-should-not-wrap.html (rev 0)
+++ trunk/LayoutTests/fast/sub-pixel/inline-block-should-not-wrap.html 2012-08-01 04:03:52 UTC (rev 124295)
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style>
+ body {
+ font-size: 0.8em;
+ }
+
+ ul {
+ display: inline;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ }
+
+ li {
+ display: inline-block;
+ border-left: 1px solid silver;
+ padding-left: 0.5em;
+ }
+
+ </style>
+ </head>
+
+ <body>
+ <ul>
+ <li><a href="" of North America</a></li>
+ <li><a href="" French loanwords</a></li>
+ </ul>
+ <p>
+ The two links above should not wrap.
+ </p>
+ </body>
+</html>
Modified: trunk/LayoutTests/platform/mac/Skipped (124294 => 124295)
--- trunk/LayoutTests/platform/mac/Skipped 2012-08-01 03:56:02 UTC (rev 124294)
+++ trunk/LayoutTests/platform/mac/Skipped 2012-08-01 04:03:52 UTC (rev 124295)
@@ -816,6 +816,7 @@
fast/sub-pixel/float-containing-block-with-margin.html
fast/sub-pixel/float-with-right-margin-zoom.html
fast/sub-pixel/float-wrap-with-subpixel-top.html
+fast/sub-pixel/inline-block-should-not-wrap.html
fast/sub-pixel/inline-block-with-margin.html
fast/sub-pixel/inline-block-with-padding.html
fast/sub-pixel/layout-boxes-with-zoom.html
Modified: trunk/LayoutTests/platform/mac-lion/Skipped (124294 => 124295)
--- trunk/LayoutTests/platform/mac-lion/Skipped 2012-08-01 03:56:02 UTC (rev 124294)
+++ trunk/LayoutTests/platform/mac-lion/Skipped 2012-08-01 04:03:52 UTC (rev 124295)
@@ -108,6 +108,7 @@
fast/sub-pixel/float-containing-block-with-margin.html
fast/sub-pixel/float-with-right-margin-zoom.html
fast/sub-pixel/float-wrap-with-subpixel-top.html
+fast/sub-pixel/inline-block-should-not-wrap.html
fast/sub-pixel/inline-block-with-margin.html
fast/sub-pixel/inline-block-with-padding.html
fast/sub-pixel/layout-boxes-with-zoom.html
Modified: trunk/LayoutTests/platform/mac-snowleopard/Skipped (124294 => 124295)
--- trunk/LayoutTests/platform/mac-snowleopard/Skipped 2012-08-01 03:56:02 UTC (rev 124294)
+++ trunk/LayoutTests/platform/mac-snowleopard/Skipped 2012-08-01 04:03:52 UTC (rev 124295)
@@ -202,6 +202,7 @@
fast/sub-pixel/float-containing-block-with-margin.html
fast/sub-pixel/float-with-right-margin-zoom.html
fast/sub-pixel/float-wrap-with-subpixel-top.html
+fast/sub-pixel/inline-block-should-not-wrap.html
fast/sub-pixel/inline-block-with-margin.html
fast/sub-pixel/inline-block-with-padding.html
fast/sub-pixel/layout-boxes-with-zoom.html
Modified: trunk/LayoutTests/platform/mac-wk2/Skipped (124294 => 124295)
--- trunk/LayoutTests/platform/mac-wk2/Skipped 2012-08-01 03:56:02 UTC (rev 124294)
+++ trunk/LayoutTests/platform/mac-wk2/Skipped 2012-08-01 04:03:52 UTC (rev 124295)
@@ -208,6 +208,7 @@
fast/sub-pixel/float-containing-block-with-margin.html
fast/sub-pixel/float-with-right-margin-zoom.html
fast/sub-pixel/float-wrap-with-subpixel-top.html
+fast/sub-pixel/inline-block-should-not-wrap.html
fast/sub-pixel/inline-block-with-margin.html
fast/sub-pixel/inline-block-with-padding.html
fast/sub-pixel/layout-boxes-with-zoom.html
Modified: trunk/LayoutTests/platform/qt/Skipped (124294 => 124295)
--- trunk/LayoutTests/platform/qt/Skipped 2012-08-01 03:56:02 UTC (rev 124294)
+++ trunk/LayoutTests/platform/qt/Skipped 2012-08-01 04:03:52 UTC (rev 124295)
@@ -269,6 +269,7 @@
fast/sub-pixel/float-containing-block-with-margin.html
fast/sub-pixel/float-with-right-margin-zoom.html
fast/sub-pixel/float-wrap-with-subpixel-top.html
+fast/sub-pixel/inline-block-should-not-wrap.html
fast/sub-pixel/inline-block-with-margin.html
fast/sub-pixel/inline-block-with-padding.html
fast/sub-pixel/layout-boxes-with-zoom.html
Modified: trunk/LayoutTests/platform/qt-4.8/Skipped (124294 => 124295)
--- trunk/LayoutTests/platform/qt-4.8/Skipped 2012-08-01 03:56:02 UTC (rev 124294)
+++ trunk/LayoutTests/platform/qt-4.8/Skipped 2012-08-01 04:03:52 UTC (rev 124295)
@@ -95,6 +95,7 @@
fast/sub-pixel/float-containing-block-with-margin.html
fast/sub-pixel/float-with-right-margin-zoom.html
fast/sub-pixel/float-wrap-with-subpixel-top.html
+fast/sub-pixel/inline-block-should-not-wrap.html
fast/sub-pixel/inline-block-with-margin.html
fast/sub-pixel/inline-block-with-padding.html
fast/sub-pixel/layout-boxes-with-zoom.html
Modified: trunk/LayoutTests/platform/win/Skipped (124294 => 124295)
--- trunk/LayoutTests/platform/win/Skipped 2012-08-01 03:56:02 UTC (rev 124294)
+++ trunk/LayoutTests/platform/win/Skipped 2012-08-01 04:03:52 UTC (rev 124295)
@@ -1733,6 +1733,7 @@
fast/sub-pixel/float-containing-block-with-margin.html
fast/sub-pixel/float-with-right-margin-zoom.html
fast/sub-pixel/float-wrap-with-subpixel-top.html
+fast/sub-pixel/inline-block-should-not-wrap.html
fast/sub-pixel/inline-block-with-margin.html
fast/sub-pixel/inline-block-with-padding.html
fast/sub-pixel/layout-boxes-with-zoom.html
Modified: trunk/LayoutTests/platform/win-wk2/Skipped (124294 => 124295)
--- trunk/LayoutTests/platform/win-wk2/Skipped 2012-08-01 03:56:02 UTC (rev 124294)
+++ trunk/LayoutTests/platform/win-wk2/Skipped 2012-08-01 04:03:52 UTC (rev 124295)
@@ -941,6 +941,7 @@
fast/sub-pixel/float-containing-block-with-margin.html
fast/sub-pixel/float-with-right-margin-zoom.html
fast/sub-pixel/float-wrap-with-subpixel-top.html
+fast/sub-pixel/inline-block-should-not-wrap.html
fast/sub-pixel/inline-block-with-margin.html
fast/sub-pixel/inline-block-with-padding.html
fast/sub-pixel/layout-boxes-with-zoom.html
Modified: trunk/LayoutTests/platform/win-xp/Skipped (124294 => 124295)
--- trunk/LayoutTests/platform/win-xp/Skipped 2012-08-01 03:56:02 UTC (rev 124294)
+++ trunk/LayoutTests/platform/win-xp/Skipped 2012-08-01 04:03:52 UTC (rev 124295)
@@ -41,6 +41,7 @@
fast/sub-pixel/float-containing-block-with-margin.html
fast/sub-pixel/float-with-right-margin-zoom.html
fast/sub-pixel/float-wrap-with-subpixel-top.html
+fast/sub-pixel/inline-block-should-not-wrap.html
fast/sub-pixel/inline-block-with-margin.html
fast/sub-pixel/inline-block-with-padding.html
fast/sub-pixel/layout-boxes-with-zoom.html
Modified: trunk/LayoutTests/platform/wincairo/Skipped (124294 => 124295)
--- trunk/LayoutTests/platform/wincairo/Skipped 2012-08-01 03:56:02 UTC (rev 124294)
+++ trunk/LayoutTests/platform/wincairo/Skipped 2012-08-01 04:03:52 UTC (rev 124295)
@@ -2122,6 +2122,7 @@
fast/sub-pixel/float-containing-block-with-margin.html
fast/sub-pixel/float-with-right-margin-zoom.html
fast/sub-pixel/float-wrap-with-subpixel-top.html
+fast/sub-pixel/inline-block-should-not-wrap.html
fast/sub-pixel/inline-block-with-margin.html
fast/sub-pixel/inline-block-with-padding.html
fast/sub-pixel/layout-boxes-with-zoom.html
Modified: trunk/LayoutTests/platform/wk2/Skipped (124294 => 124295)
--- trunk/LayoutTests/platform/wk2/Skipped 2012-08-01 03:56:02 UTC (rev 124294)
+++ trunk/LayoutTests/platform/wk2/Skipped 2012-08-01 04:03:52 UTC (rev 124295)
@@ -91,6 +91,7 @@
fast/sub-pixel/float-containing-block-with-margin.html
fast/sub-pixel/float-with-right-margin-zoom.html
fast/sub-pixel/float-wrap-with-subpixel-top.html
+fast/sub-pixel/inline-block-should-not-wrap.html
fast/sub-pixel/inline-block-with-margin.html
fast/sub-pixel/inline-block-with-padding.html
fast/sub-pixel/layout-boxes-with-zoom.html
Modified: trunk/Source/WebCore/ChangeLog (124294 => 124295)
--- trunk/Source/WebCore/ChangeLog 2012-08-01 03:56:02 UTC (rev 124294)
+++ trunk/Source/WebCore/ChangeLog 2012-08-01 04:03:52 UTC (rev 124295)
@@ -1,3 +1,22 @@
+2012-07-31 Emil A Eklund <[email protected]>
+
+ Float imprecision causes incorrect wrapping in LineLayout with subpixel layout
+ https://bugs.webkit.org/show_bug.cgi?id=92778
+
+ Reviewed by Eric Seidel.
+
+ Due to float imprecision an incorrect wrapping decision is made in
+ certain cases where the values being compare are close but not exactly
+ the same. This can happen as the size of blocks is represented in layout
+ units while line layout uses floats.
+
+ Test: fast/sub-pixel/inline-block-should-not-wrap.html
+
+ * rendering/RenderBlockLineLayout.cpp:
+ (WebCore::LineWidth::fitsOnLine):
+ Use LayoutUnit::epsilon when comparing values as that is the maximum
+ precision we support.
+
2012-07-31 Hayato Ito <[email protected]>
Refactor EventDispatcher::dispatchEvent() so that we can call each phase (Caputure, Target and Bubbling) of event dispatching separately.
Modified: trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp (124294 => 124295)
--- trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp 2012-08-01 03:56:02 UTC (rev 124294)
+++ trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp 2012-08-01 04:03:52 UTC (rev 124295)
@@ -75,8 +75,13 @@
ASSERT(block);
updateAvailableWidth();
}
+#if ENABLE(SUBPIXEL_LAYOUT)
+ bool fitsOnLine() const { return currentWidth() <= m_availableWidth + LayoutUnit::epsilon(); }
+ bool fitsOnLine(float extra) const { return currentWidth() + extra <= m_availableWidth + LayoutUnit::epsilon(); }
+#else
bool fitsOnLine() const { return currentWidth() <= m_availableWidth; }
bool fitsOnLine(float extra) const { return currentWidth() + extra <= m_availableWidth; }
+#endif
float currentWidth() const { return m_committedWidth + m_uncommittedWidth; }
// FIXME: We should eventually replace these three functions by ones that work on a higher abstraction.