Bug 56052 - percentages are incorrectly rounded in WebKit
Summary: percentages are incorrectly rounded in WebKit
Status: RESOLVED DUPLICATE of bug 56758
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebCore Misc. (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-03-09 14:42 PST by Rik Cabanier
Modified: 2011-04-26 12:41 PDT (History)
6 users (show)

See Also:


Attachments
First pass to get the results of the other platforms (30.98 KB, patch)
2011-03-09 14:53 PST, Rik Cabanier
no flags Details | Formatted Diff | Diff
First pass to get the results of the other platforms (30.98 KB, patch)
2011-03-09 16:41 PST, Rik Cabanier
no flags Details | Formatted Diff | Diff
test to see if the build bots can integrate my change (30.98 KB, patch)
2011-03-10 20:32 PST, Rik Cabanier
no flags Details | Formatted Diff | Diff
First pass to get the results of the other platforms (30.97 KB, patch)
2011-03-11 09:25 PST, Rik Cabanier
hyatt: review-
hyatt: commit-queue-
Details | Formatted Diff | Diff
Update patch. Fixed variable name per David Hyatt (31.09 KB, patch)
2011-03-11 14:18 PST, Rik Cabanier
no flags Details | Formatted Diff | Diff
updated checksum file (32 bytes, application/octet-stream)
2011-03-11 14:33 PST, Rik Cabanier
no flags Details
Update patch. Fixed variable name per David Hyatt + updated pixel test (51.58 KB, patch)
2011-03-11 14:41 PST, Rik Cabanier
no flags Details | Formatted Diff | Diff
fixes for mac leopard (53.57 KB, patch)
2011-03-16 12:56 PDT, Rik Cabanier
no flags Details | Formatted Diff | Diff
Fixes for max leopard (51.67 KB, patch)
2011-03-16 13:44 PDT, Rik Cabanier
no flags Details | Formatted Diff | Diff
Fixes for max leopard (51.48 KB, patch)
2011-03-16 13:57 PDT, Rik Cabanier
no flags Details | Formatted Diff | Diff
Fixes for max leopard (51.69 KB, patch)
2011-03-16 14:06 PDT, Rik Cabanier
no flags Details | Formatted Diff | Diff
Fixed for mac 32 bit (55.59 KB, patch)
2011-03-17 11:07 PDT, Rik Cabanier
no flags Details | Formatted Diff | Diff
Fixes for mac 32bit (55.60 KB, patch)
2011-03-17 11:15 PDT, Rik Cabanier
no flags Details | Formatted Diff | Diff
used narrowPrecisionToFloat per Simon's review notes (55.76 KB, patch)
2011-03-18 14:33 PDT, Rik Cabanier
simon.fraser: review+
simon.fraser: commit-queue-
Details | Formatted Diff | Diff
updated per Simon's review (56.18 KB, patch)
2011-03-21 10:51 PDT, Rik Cabanier
no flags Details | Formatted Diff | Diff
updated per Simon's review (deleted)
2011-03-21 11:00 PDT, Rik Cabanier
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Rik Cabanier 2011-03-09 14:42:30 PST
WebCore stores percentages as fixed point with limited precision.
Because of this, one of the layout tests (fast/css/percentage-non-integer.html) is not rendering correctly.

The Length class should be updated to use float instead of fixed.
Comment 1 Rik Cabanier 2011-03-09 14:53:59 PST
Created attachment 85242 [details]
First pass to get the results of the other platforms
Comment 2 Rik Cabanier 2011-03-09 14:54:29 PST
As discussed with David Hyatt
Comment 3 Rik Cabanier 2011-03-09 16:41:38 PST
Created attachment 85257 [details]
First pass to get the results of the other platforms
Comment 4 Rik Cabanier 2011-03-10 20:32:20 PST
Created attachment 85432 [details]
test to see if the build bots can integrate my change
Comment 5 WebKit Review Bot 2011-03-10 20:36:07 PST
Attachment 85432 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/ChangeLog', u'LayoutTests/plat..." exit_code: 1

Source/WebCore/ChangeLog:7:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 6 Rik Cabanier 2011-03-11 09:25:33 PST
Created attachment 85482 [details]
First pass to get the results of the other platforms
Comment 7 Dave Hyatt 2011-03-11 13:24:14 PST
Comment on attachment 85482 [details]
First pass to get the results of the other platforms

View in context: https://bugs.webkit.org/attachment.cgi?id=85482&action=review

> Source/WebCore/rendering/AutoTableLayout.cpp:272
> +    // if there was no remaining percent, maxWidth is invalid.
> +    if (!remainingPercent && maxNonPercent)
> +        maxWidth = intMaxForLength;        

This seems like a logic change... is there a test to go with it?

> Source/WebCore/rendering/FixedTableLayout.cpp:239
> +    float totalRawPercent = 0;

Seems like this could be renamed to remove the "Raw" word.

> LayoutTests/ChangeLog:8
> +        * platform/mac/fast/css/percentage-non-integer-expected.txt:

Missing a pixel result for the test?
Comment 8 Rik Cabanier 2011-03-11 14:18:40 PST
Created attachment 85532 [details]
Update patch. Fixed variable name per David Hyatt
Comment 9 Rik Cabanier 2011-03-11 14:33:21 PST
Created attachment 85536 [details]
updated checksum file
Comment 10 Rik Cabanier 2011-03-11 14:41:00 PST
Created attachment 85538 [details]
Update patch. Fixed variable name per David Hyatt + updated pixel test
Comment 11 Dave Hyatt 2011-03-14 14:18:57 PDT
Comment on attachment 85538 [details]
Update patch. Fixed variable name per David Hyatt + updated pixel test

r=me
Comment 12 WebKit Commit Bot 2011-03-14 19:15:39 PDT
The commit-queue encountered the following flaky tests while processing attachment 85538 [details]:

animations/suspend-resume-animation.html bug 48161 (author: cmarrin@apple.com)
The commit-queue is continuing to process your patch.
Comment 13 WebKit Commit Bot 2011-03-14 19:18:09 PDT
Comment on attachment 85538 [details]
Update patch. Fixed variable name per David Hyatt + updated pixel test

Clearing flags on attachment: 85538

Committed r81097: <http://trac.webkit.org/changeset/81097>
Comment 14 WebKit Commit Bot 2011-03-14 19:18:15 PDT
All reviewed patches have been landed.  Closing bug.
Comment 15 WebKit Review Bot 2011-03-14 19:32:10 PDT
http://trac.webkit.org/changeset/81097 might have broken Leopard Intel Release (Build)
Comment 16 Mark Rowe (bdash) 2011-03-14 20:56:53 PDT
I rolled this out in r81103 due to the fact it breaks the 32-bit Mac build and caused assertions failures on the Windows Debug build bot.
Comment 17 Rik Cabanier 2011-03-15 16:35:42 PDT
(In reply to comment #16)
> I rolled this out in r81103 due to the fact it breaks the 32-bit Mac build and caused assertions failures on the Windows Debug build bot.

I found the mac leopard issue but am unable to find the windows debug issue.
Where is the failure log located?
Comment 18 Rik Cabanier 2011-03-16 12:56:38 PDT
Created attachment 85957 [details]
fixes for mac leopard
Comment 19 Rik Cabanier 2011-03-16 13:44:56 PDT
Created attachment 85966 [details]
Fixes for max leopard
Comment 20 Rik Cabanier 2011-03-16 13:57:54 PDT
Created attachment 85969 [details]
Fixes for max leopard
Comment 21 Rik Cabanier 2011-03-16 14:06:03 PDT
Created attachment 85971 [details]
Fixes for max leopard
Comment 22 Rik Cabanier 2011-03-17 11:07:49 PDT
Created attachment 86072 [details]
Fixed for mac 32 bit
Comment 23 Rik Cabanier 2011-03-17 11:15:30 PDT
Created attachment 86075 [details]
Fixes for mac 32bit
Comment 24 Simon Fraser (smfr) 2011-03-18 14:19:08 PDT
Comment on attachment 86075 [details]
Fixes for mac 32bit

View in context: https://bugs.webkit.org/attachment.cgi?id=86075&action=review

> Source/WebCore/page/animation/AnimationBase.cpp:116
> +    return to.blend(from, static_cast<float>(progress));

This should use narrowPrecisionToFloat()

> Source/WebCore/platform/graphics/transforms/TranslateTransformOperation.cpp:35
> +        return TranslateTransformOperation::create(Length(m_x.type()).blend(m_x, static_cast<float>(progress)), 
> +                                                   Length(m_y.type()).blend(m_y, static_cast<float>(progress)), 
> +                                                   Length(m_z.type()).blend(m_z, static_cast<float>(progress)), m_type);

Ditto

> Source/WebCore/platform/graphics/transforms/TranslateTransformOperation.cpp:41
> +    return TranslateTransformOperation::create(m_x.blend(fromX, static_cast<float>(progress)), m_y.blend(fromY, static_cast<float>(progress)), m_z.blend(fromZ, static_cast<float>(progress)), m_type);

Ditto
Comment 25 Rik Cabanier 2011-03-18 14:33:33 PDT
Created attachment 86214 [details]
used narrowPrecisionToFloat per Simon's review notes
Comment 26 Simon Fraser (smfr) 2011-03-21 10:19:00 PDT
Comment on attachment 86214 [details]
used narrowPrecisionToFloat per Simon's review notes

View in context: https://bugs.webkit.org/attachment.cgi?id=86214&action=review

> Source/WebCore/platform/Length.h:76
> +            m_floatValue = static_cast<float>(m_floatValue*v);
> +        else        
> +            m_intValue = static_cast<int>(m_intValue*v);

Spaces around the * please.

> Source/WebCore/platform/Length.h:170
> +        if (m_isFloat)
> +            return !m_floatValue; 
> +        
> +        return !m_intValue;

Maybe slightly cleaner as return m_isFloat ? !m_floatValue : !m_intValue;

> Source/WebCore/platform/Length.h:196
> +            float fromPercent = from.isZero() ? 0.f : from.percent();
> +            float toPercent = isZero() ? 0.f : percent();

Is the 0.f required to fix a compiler issue? If not, stick with 0.

> Source/WebCore/platform/Length.h:201
> +        float fromValue = from.isZero() ? 0.f : from.value();
> +        float toValue = isZero() ? 0.f : value();

Ditto.

> Source/WebCore/rendering/AutoTableLayout.cpp:235
> +    const float epsilon = 1 / 128.0f;

It's not obvious why you chose 1/128 here.
Comment 27 Rik Cabanier 2011-03-21 10:51:08 PDT
Created attachment 86334 [details]
updated per Simon's review
Comment 28 Rik Cabanier 2011-03-21 10:55:28 PDT
Comment on attachment 86334 [details]
updated per Simon's review

>Index: Source/WebCore/ChangeLog
>===================================================================
>--- Source/WebCore/ChangeLog	(revision 80665)
>+++ Source/WebCore/ChangeLog	(working copy)
>@@ -1,3 +1,42 @@
>+2011-03-09  Rik Cabanier  <cabanier@adobe.com>
>+
>+        Reviewed by NOBODY (OOPS!).
>+
>+        bug 56052: percentages are incorrectly rounded in WebKit
>+        https://bugs.webkit.org/show_bug.cgi?id=56052
>+
>+        test: fast/css/percentage-non-integer.html
>+
>+        * css/CSSStyleSelector.cpp:
>+        (WebCore::CSSStyleSelector::applyProperty):
>+        * page/PrintContext.cpp:
>+        (WebCore::PrintContext::pageProperty):
>+        * platform/Length.h:
>+        (WebCore::Length::Length):
>+        (WebCore::Length::operator*=):
>+        (WebCore::Length::value):
>+        (WebCore::Length::percent):
>+        (WebCore::Length::setValue):
>+        (WebCore::Length::calcValue):
>+        (WebCore::Length::calcMinValue):
>+        (WebCore::Length::isUndefined):
>+        (WebCore::Length::isZero):
>+        (WebCore::Length::isPositive):
>+        (WebCore::Length::isNegative):
>+        * rendering/AutoTableLayout.cpp:
>+        (WebCore::AutoTableLayout::recalcColumn):
>+        (WebCore::AutoTableLayout::computePreferredLogicalWidths):
>+        (WebCore::AutoTableLayout::calcEffectiveLogicalWidth):
>+        (WebCore::AutoTableLayout::layout):
>+        * rendering/FixedTableLayout.cpp:
>+        (WebCore::FixedTableLayout::calcWidthArray):
>+        (WebCore::FixedTableLayout::layout):
>+        * rendering/RenderTableSection.cpp:
>+        (WebCore::RenderTableSection::addCell):
>+        (WebCore::RenderTableSection::layoutRows):
>+        * rendering/style/BorderData.h:
>+        (WebCore::BorderData::hasBorderRadius):
>+
> 2011-03-09  James Robinson  <jamesr@chromium.org>
> 
>         Reviewed by Kenneth Russell.
>Index: Source/WebCore/css/CSSStyleSelector.cpp
>===================================================================
>--- Source/WebCore/css/CSSStyleSelector.cpp	(revision 80381)
>+++ Source/WebCore/css/CSSStyleSelector.cpp	(working copy)
>@@ -5332,8 +5332,8 @@ void CSSStyleSelector::applyProperty(int
>             radiusHeight = Length(pair->second()->getDoubleValue(), Percent);
>         else
>             radiusHeight = Length(max(intMinForLength, min(intMaxForLength, pair->second()->computeLengthInt(style(), m_rootElementStyle, zoomFactor))), Fixed);
>-        int width = radiusWidth.rawValue();
>-        int height = radiusHeight.rawValue();
>+        int width = radiusWidth.value();
>+        int height = radiusHeight.value();
>         if (width < 0 || height < 0)
>             return;
>         if (width == 0)
>Index: Source/WebCore/page/PrintContext.cpp
>===================================================================
>--- Source/WebCore/page/PrintContext.cpp	(revision 80381)
>+++ Source/WebCore/page/PrintContext.cpp	(working copy)
>@@ -282,16 +282,16 @@ String PrintContext::pageProperty(Frame*
>     if (!strcmp(propertyName, "margin-left")) {
>         if (style->marginLeft().isAuto())
>             return String("auto");
>-        return String::number(style->marginLeft().rawValue());
>+        return String::number(style->marginLeft().value());
>     }
>     if (!strcmp(propertyName, "line-height"))
>-        return String::number(style->lineHeight().rawValue());
>+        return String::number(style->lineHeight().value());
>     if (!strcmp(propertyName, "font-size"))
>         return String::number(style->fontDescription().computedPixelSize());
>     if (!strcmp(propertyName, "font-family"))
>         return style->fontDescription().family().family().string();
>     if (!strcmp(propertyName, "size"))
>-        return makeString(String::number(style->pageSize().width().rawValue()), ' ', String::number(style->pageSize().height().rawValue()));
>+        return makeString(String::number(style->pageSize().width().value()), ' ', String::number(style->pageSize().height().value()));
> 
>     return makeString("pageProperty() unimplemented for: ", propertyName);
> }
>Index: Source/WebCore/page/animation/AnimationBase.cpp
>===================================================================
>--- Source/WebCore/page/animation/AnimationBase.cpp	(revision 80381)
>+++ Source/WebCore/page/animation/AnimationBase.cpp	(working copy)
>@@ -113,7 +113,7 @@ static inline Color blendFunc(const Anim
> 
> static inline Length blendFunc(const AnimationBase*, const Length& from, const Length& to, double progress)
> {  
>-    return to.blend(from, progress);
>+    return to.blend(from, narrowPrecisionToFloat(progress));
> }
> 
> static inline LengthSize blendFunc(const AnimationBase* anim, const LengthSize& from, const LengthSize& to, double progress)
>Index: Source/WebCore/platform/Length.h
>===================================================================
>--- Source/WebCore/platform/Length.h	(revision 80381)
>+++ Source/WebCore/platform/Length.h	(working copy)
>@@ -1,6 +1,7 @@
> /*
>     Copyright (C) 1999 Lars Knoll (knoll@kde.org)
>     Copyright (C) 2006, 2008 Apple Inc. All rights reserved.
>+    Copyright (C) 2011 Rik Cabanier (cabanier@adobe.com)
> 
>     This library is free software; you can redistribute it and/or
>     modify it under the terms of the GNU Library General Public
>@@ -30,7 +31,6 @@
> namespace WebCore {
> 
> const int undefinedLength = -1;
>-const int percentScaleFactor = 128;
> const int intMaxForLength = 0x7ffffff; // max value for a 28-bit int
> const int intMinForLength = (-0x7ffffff - 1); // min value for a 28-bit int
> 
>@@ -52,34 +52,40 @@ public:
>     Length(int v, LengthType t, bool q = false)
>         : m_intValue(v), m_quirk(q), m_type(t), m_isFloat(false)
>     {
>-        ASSERT(t != Percent);
>+    }
>+    
>+    Length(float v, LengthType t, bool q = false)
>+    : m_floatValue(v), m_quirk(q), m_type(t), m_isFloat(true)
>+    {            
>     }
> 
>     Length(double v, LengthType t, bool q = false)
>-        : m_quirk(q), m_type(t), m_isFloat(false)
>-    {
>-        if (m_type == Percent)
>-            m_intValue = static_cast<int>(v*percentScaleFactor);
>-        else {
>-            m_isFloat = true;            
>-            m_floatValue = static_cast<float>(v);
>-       }
>+        : m_quirk(q), m_type(t), m_isFloat(true)
>+    {           
>+        m_floatValue = static_cast<float>(v);    
>     }
> 
>     bool operator==(const Length& o) const { return (getFloatValue() == o.getFloatValue()) && (m_type == o.m_type) && (m_quirk == o.m_quirk); }
>     bool operator!=(const Length& o) const { return (getFloatValue() != o.getFloatValue()) || (m_type != o.m_type) || (m_quirk != o.m_quirk); }
> 
>+    const Length& operator*=(float v)
>+    {        
>+        if (m_isFloat)
>+            m_floatValue = static_cast<float>(m_floatValue * v);
>+        else        
>+            m_intValue = static_cast<int>(m_intValue * v);
>+        
>+        return *this;
>+    }
>+    
>     int value() const {
>-        ASSERT(type() != Percent);
>-        return rawValue();
>+        return getIntValue();
>     }
> 
>-    int rawValue() const { return getIntValue(); }
>-
>-    double percent() const
>+    float percent() const
>     {
>         ASSERT(type() == Percent);
>-        return static_cast<double>(rawValue()) / percentScaleFactor;
>+        return getFloatValue();
>     }
> 
>     LengthType type() const { return static_cast<LengthType>(m_type); }
>@@ -94,18 +100,17 @@ public:
> 
>     void setValue(int value)
>     {
>-        ASSERT(!value || type() != Percent);
>         setValue(Fixed, value);
>     }
> 
>-    void setValue(LengthType t, double value)
>+    void setValue(LengthType t, float value)
>     {
>         m_type = t;
>-        m_floatValue = static_cast<float>(value);
>+        m_floatValue = value;
>         m_isFloat = true;    
>     }
> 
>-    void setValue(double value)
>+    void setValue(float value)
>     {
>         *this = Length(value, Fixed);
>     }
>@@ -119,7 +124,7 @@ public:
>             case Percent:
>                 if (roundPercentages)
>                     return static_cast<int>(round(maxValue * percent() / 100.0));
>-                return maxValue * rawValue() / (100 * percentScaleFactor);
>+                return static_cast<int>(maxValue * percent() / 100.0);
>             case Auto:
>                 return maxValue;
>             default:
>@@ -135,7 +140,7 @@ public:
>             case Percent:
>                 if (roundPercentages)
>                     return static_cast<int>(round(maxValue * percent() / 100.0));
>-                return maxValue * rawValue() / (100 * percentScaleFactor);
>+                return static_cast<int>(maxValue * percent() / 100.0);
>             case Auto:
>             default:
>                 return 0;
>@@ -156,10 +161,16 @@ public:
>         }
>     }
> 
>-    bool isUndefined() const { return rawValue() == undefinedLength; }
>-    bool isZero() const { return !getIntValue(); }
>-    bool isPositive() const { return rawValue() > 0; }
>-    bool isNegative() const { return rawValue() < 0; }
>+    bool isUndefined() const { return value() == undefinedLength; }
>+    bool isZero() const 
>+    { 
>+        return m_isFloat ? !m_floatValue : !m_intValue;
>+    }
>+    bool isPositive() const { return getFloatValue() > 0; }
>+    bool isNegative() const { return getFloatValue() < 0; }
> 
>     bool isAuto() const { return type() == Auto; }
>     bool isRelative() const { return type() == Relative; }
>@@ -167,7 +178,7 @@ public:
>     bool isFixed() const { return type() == Fixed; }
>     bool isIntrinsicOrAuto() const { return type() == Auto || type() == MinIntrinsic || type() == Intrinsic; }
> 
>-    Length blend(const Length& from, double progress) const
>+    Length blend(const Length& from, float progress) const
>     {
>         // Blend two lengths to produce a new length that is in between them.  Used for animation.
>         if (!from.isZero() && !isZero() && from.type() != type())
>@@ -181,29 +192,25 @@ public:
>             resultType = from.type();
>         
>         if (resultType == Percent) {
>-            double fromPercent = from.isZero() ? 0. : from.percent();
>-            double toPercent = isZero() ? 0. : percent();
>+            float fromPercent = from.isZero() ? 0 : from.percent();
>+            float toPercent = isZero() ? 0 : percent();
>             return Length(fromPercent + (toPercent - fromPercent) * progress, Percent);
>         } 
>             
>-        double fromValue = from.isZero() ? 0 : from.value();
>-        double toValue = isZero() ? 0 : value();
>+        float fromValue = from.isZero() ? 0 : from.value();
>+        float toValue = isZero() ? 0 : value();
>         return Length(fromValue + (toValue - fromValue) * progress, resultType);
>     }
> 
> private:
>     int getIntValue() const
>     {
>-        if (m_isFloat)
>-            return static_cast<int>(m_floatValue);
>-        return m_intValue;
>+        return m_isFloat ? static_cast<int>(m_floatValue) : m_intValue;
>     }
> 
>     float getFloatValue() const
>     {
>-        if (m_isFloat)
>-                return m_floatValue;
>-        return m_intValue;
>+        return m_isFloat ? m_floatValue : m_intValue;
>     }
> 
>     union {
>Index: Source/WebCore/platform/graphics/transforms/TranslateTransformOperation.cpp
>===================================================================
>--- Source/WebCore/platform/graphics/transforms/TranslateTransformOperation.cpp	(revision 80381)
>+++ Source/WebCore/platform/graphics/transforms/TranslateTransformOperation.cpp	(working copy)
>@@ -21,6 +21,7 @@
> 
> #include "config.h"
> #include "TranslateTransformOperation.h"
>+#include "FloatConversion.h"
> 
> namespace WebCore {
> 
>@@ -30,15 +31,15 @@ PassRefPtr<TransformOperation> Translate
>         return this;
>     
>     if (blendToIdentity)
>-        return TranslateTransformOperation::create(Length(m_x.type()).blend(m_x, progress), 
>-                                                   Length(m_y.type()).blend(m_y, progress), 
>-                                                   Length(m_z.type()).blend(m_z, progress), m_type);
>+        return TranslateTransformOperation::create(Length(m_x.type()).blend(m_x, narrowPrecisionToFloat(progress)), 
>+                                                   Length(m_y.type()).blend(m_y, narrowPrecisionToFloat(progress)), 
>+                                                   Length(m_z.type()).blend(m_z, narrowPrecisionToFloat(progress)), m_type);
> 
>     const TranslateTransformOperation* fromOp = static_cast<const TranslateTransformOperation*>(from);
>     Length fromX = fromOp ? fromOp->m_x : Length(m_x.type());
>     Length fromY = fromOp ? fromOp->m_y : Length(m_y.type());
>     Length fromZ = fromOp ? fromOp->m_z : Length(m_z.type());
>-    return TranslateTransformOperation::create(m_x.blend(fromX, progress), m_y.blend(fromY, progress), m_z.blend(fromZ, progress), m_type);
>+    return TranslateTransformOperation::create(m_x.blend(fromX, narrowPrecisionToFloat(progress)), m_y.blend(fromY, narrowPrecisionToFloat(progress)), m_z.blend(fromZ, narrowPrecisionToFloat(progress)), m_type);
> }
> 
> } // namespace WebCore
>Index: Source/WebCore/rendering/AutoTableLayout.cpp
>===================================================================
>--- Source/WebCore/rendering/AutoTableLayout.cpp	(revision 80381)
>+++ Source/WebCore/rendering/AutoTableLayout.cpp	(working copy)
>@@ -81,7 +81,7 @@ void AutoTableLayout::recalcColumn(int e
> 
>                     Length cellLogicalWidth = cell->styleOrColLogicalWidth();
>                     // FIXME: What is this arbitrary value?
>-                    if (cellLogicalWidth.rawValue() > 32760)
>+                    if (cellLogicalWidth.value() > 32760)
>                         cellLogicalWidth.setValue(32760);
>                     if (cellLogicalWidth.isNegative())
>                         cellLogicalWidth.setValue(0);
>@@ -105,13 +105,13 @@ void AutoTableLayout::recalcColumn(int e
>                         break;
>                     case Percent:
>                         m_hasPercent = true;
>-                        if (cellLogicalWidth.isPositive() && (!columnLayout.logicalWidth.isPercent() || cellLogicalWidth.rawValue() > columnLayout.logicalWidth.rawValue()))
>+                        if (cellLogicalWidth.isPositive() && (!columnLayout.logicalWidth.isPercent() || cellLogicalWidth.value() > columnLayout.logicalWidth.value()))
>                             columnLayout.logicalWidth = cellLogicalWidth;
>                         break;
>                     case Relative:
>                         // FIXME: Need to understand this case and whether it makes sense to compare values
>                         // which are not necessarily of the same type.
>-                        if (cellLogicalWidth.isAuto() || (cellLogicalWidth.isRelative() && cellLogicalWidth.value() > columnLayout.logicalWidth.rawValue()))
>+                        if (cellLogicalWidth.isAuto() || (cellLogicalWidth.isRelative() && cellLogicalWidth.value() > columnLayout.logicalWidth.value()))
>                             columnLayout.logicalWidth = cellLogicalWidth;
>                     default:
>                         break;
>@@ -232,16 +232,16 @@ void AutoTableLayout::computePreferredLo
> 
>     // We substitute 0 percent by (epsilon / percentScaleFactor) percent in two places below to avoid division by zero.
>     // FIXME: Handle the 0% cases properly.
>-    const int epsilon = 1;
>+    const float epsilon = 1 / 128.0f;
> 
>-    int remainingPercent = 100 * percentScaleFactor;
>+    float remainingPercent = 100;
>     for (size_t i = 0; i < m_layoutStruct.size(); ++i) {
>         minWidth += m_layoutStruct[i].effectiveMinLogicalWidth;
>         maxWidth += m_layoutStruct[i].effectiveMaxLogicalWidth;
>         if (scaleColumns) {
>             if (m_layoutStruct[i].effectiveLogicalWidth.isPercent()) {
>-                int percent = min(m_layoutStruct[i].effectiveLogicalWidth.rawValue(), remainingPercent);
>-                float logicalWidth = static_cast<float>(m_layoutStruct[i].effectiveMaxLogicalWidth) * 100 * percentScaleFactor / max(percent, epsilon);
>+                float percent = min(static_cast<float>(m_layoutStruct[i].effectiveLogicalWidth.percent()), remainingPercent);
>+                float logicalWidth = static_cast<float>(m_layoutStruct[i].effectiveMaxLogicalWidth) * 100 / max(percent, epsilon);
>                 maxPercent = max(logicalWidth,  maxPercent);
>                 remainingPercent -= percent;
>             } else
>@@ -250,7 +250,7 @@ void AutoTableLayout::computePreferredLo
>     }
> 
>     if (scaleColumns) {
>-        maxNonPercent = maxNonPercent * 100 * percentScaleFactor / max(remainingPercent, epsilon);
>+        maxNonPercent = maxNonPercent * 100 / max(remainingPercent, epsilon);
>         maxWidth = max(maxWidth, static_cast<int>(min(maxNonPercent, INT_MAX / 2.0f)));
>         maxWidth = max(maxWidth, static_cast<int>(min(maxPercent, INT_MAX / 2.0f)));
>     }
>@@ -266,6 +266,10 @@ void AutoTableLayout::computePreferredLo
>         minWidth = max(minWidth, tableLogicalWidth.value());
>         maxWidth = minWidth;
>     }
>+    
>+    // if there was no remaining percent, maxWidth is invalid.
>+    if (!remainingPercent && maxNonPercent)
>+        maxWidth = intMaxForLength;        
> }
> 
> /*
>@@ -300,7 +304,7 @@ int AutoTableLayout::calcEffectiveLogica
>         size_t lastCol = effCol;
>         int cellMinLogicalWidth = cell->minPreferredLogicalWidth() + spacingInRowDirection;
>         float cellMaxLogicalWidth = cell->maxPreferredLogicalWidth() + spacingInRowDirection;
>-        int totalPercent = 0;
>+        float totalPercent = 0;
>         int spanMinLogicalWidth = 0;
>         float spanMaxLogicalWidth = 0;
>         bool allColsArePercent = true;
>@@ -312,7 +316,7 @@ int AutoTableLayout::calcEffectiveLogica
>             Layout& columnLayout = m_layoutStruct[lastCol];
>             switch (columnLayout.logicalWidth.type()) {
>             case Percent:
>-                totalPercent += columnLayout.logicalWidth.rawValue();
>+                totalPercent += columnLayout.logicalWidth.percent();
>                 allColsAreFixed = false;
>                 break;
>             case Fixed:
>@@ -339,7 +343,7 @@ int AutoTableLayout::calcEffectiveLogica
>                     columnLayout.effectiveLogicalWidth = Length();
>                     allColsArePercent = false;
>                 } else
>-                    totalPercent += columnLayout.effectiveLogicalWidth.rawValue();
>+                    totalPercent += columnLayout.effectiveLogicalWidth.percent();
>                 allColsAreFixed = false;
>             }
>             if (!columnLayout.emptyCellsOnly)
>@@ -354,14 +358,14 @@ int AutoTableLayout::calcEffectiveLogica
> 
>         // adjust table max width if needed
>         if (cellLogicalWidth.isPercent()) {
>-            if (totalPercent > cellLogicalWidth.rawValue() || allColsArePercent) {
>+            if (totalPercent > cellLogicalWidth.percent() || allColsArePercent) {
>                 // can't satify this condition, treat as variable
>                 cellLogicalWidth = Length();
>             } else {
>-                maxLogicalWidth = max(maxLogicalWidth, max(spanMaxLogicalWidth, cellMaxLogicalWidth) * 100 * percentScaleFactor / cellLogicalWidth.rawValue());
>+                maxLogicalWidth = max(maxLogicalWidth, static_cast<float>(max(spanMaxLogicalWidth, cellMaxLogicalWidth) * 100  / cellLogicalWidth.percent()));
> 
>                 // all non percent columns in the span get percent values to sum up correctly.
>-                int percentMissing = cellLogicalWidth.rawValue() - totalPercent;
>+                float percentMissing = cellLogicalWidth.percent() - totalPercent;
>                 float totalWidth = 0;
>                 for (unsigned pos = effCol; pos < lastCol; ++pos) {
>                     if (!m_layoutStruct[pos].effectiveLogicalWidth.isPercent())
>@@ -370,7 +374,7 @@ int AutoTableLayout::calcEffectiveLogica
> 
>                 for (unsigned pos = effCol; pos < lastCol && totalWidth > 0; ++pos) {
>                     if (!m_layoutStruct[pos].effectiveLogicalWidth.isPercent()) {
>-                        int percent = static_cast<int>(percentMissing * static_cast<float>(m_layoutStruct[pos].effectiveMaxLogicalWidth) / totalWidth);
>+                        float percent = percentMissing * static_cast<float>(m_layoutStruct[pos].effectiveMaxLogicalWidth) / totalWidth;
>                         totalWidth -= m_layoutStruct[pos].effectiveMaxLogicalWidth;
>                         percentMissing -= percent;
>                         if (percent > 0)
>@@ -491,7 +495,7 @@ void AutoTableLayout::layout()
>     int numFixed = 0;
>     float totalAuto = 0;
>     float totalFixed = 0;
>-    int totalPercent = 0;
>+    float totalPercent = 0;
>     int allocAuto = 0;
>     unsigned numAutoEmptyCellsOnly = 0;
> 
>@@ -504,7 +508,7 @@ void AutoTableLayout::layout()
>         switch (logicalWidth.type()) {
>         case Percent:
>             havePercent = true;
>-            totalPercent += logicalWidth.rawValue();
>+            totalPercent += logicalWidth.percent();
>             break;
>         case Relative:
>             totalRelative += logicalWidth.value();
>@@ -538,9 +542,9 @@ void AutoTableLayout::layout()
>                 m_layoutStruct[i].computedLogicalWidth = cellLogicalWidth;
>             }
>         }
>-        if (totalPercent > 100 * percentScaleFactor) {
>+        if (totalPercent > 100) {
>             // remove overallocated space from the last columns
>-            int excess = tableLogicalWidth * (totalPercent - 100 * percentScaleFactor) / (100 * percentScaleFactor);
>+            int excess = tableLogicalWidth * (totalPercent - 100) / 100;
>             for (int i = nEffCols - 1; i >= 0; --i) {
>                 if (m_layoutStruct[i].effectiveLogicalWidth.isPercent()) {
>                     int cellLogicalWidth = m_layoutStruct[i].computedLogicalWidth;
>@@ -607,13 +611,13 @@ void AutoTableLayout::layout()
>     }
> 
>     // spread over percent colums
>-    if (available > 0 && m_hasPercent && totalPercent < 100 * percentScaleFactor) {
>+    if (available > 0 && m_hasPercent && totalPercent < 100) {
>         for (size_t i = 0; i < nEffCols; ++i) {
>             Length& logicalWidth = m_layoutStruct[i].effectiveLogicalWidth;
>             if (logicalWidth.isPercent()) {
>-                int cellLogicalWidth = available * logicalWidth.rawValue() / totalPercent;
>+                int cellLogicalWidth = available * logicalWidth.percent() / totalPercent;
>                 available -= cellLogicalWidth;
>-                totalPercent -= logicalWidth.rawValue();
>+                totalPercent -= logicalWidth.percent();
>                 m_layoutStruct[i].computedLogicalWidth += cellLogicalWidth;
>                 if (!available || !totalPercent)
>                     break;
>Index: Source/WebCore/rendering/FixedTableLayout.cpp
>===================================================================
>--- Source/WebCore/rendering/FixedTableLayout.cpp	(revision 80381)
>+++ Source/WebCore/rendering/FixedTableLayout.cpp	(working copy)
>@@ -118,7 +118,8 @@ int FixedTableLayout::calcWidthArray(int
>                     spanInCurrentEffectiveColumn = m_table->spanOfEffCol(currentEffectiveColumn);
>                 }
>                 if ((w.isFixed() || w.isPercent()) && w.isPositive()) {
>-                    m_width[currentEffectiveColumn].setValue(w.type(), w.rawValue() * spanInCurrentEffectiveColumn);
>+                    m_width[currentEffectiveColumn] = w;
>+                    m_width[currentEffectiveColumn] *= spanInCurrentEffectiveColumn;
>                     usedWidth += effWidth * spanInCurrentEffectiveColumn;
>                 }
>                 span -= spanInCurrentEffectiveColumn;
>@@ -164,10 +165,11 @@ int FixedTableLayout::calcWidthArray(int
>                 int usedSpan = 0;
>                 int i = 0;
>                 while (usedSpan < span && cCol + i < nEffCols) {
>-                    int eSpan = m_table->spanOfEffCol(cCol + i);
>+                    float eSpan = m_table->spanOfEffCol(cCol + i);
>                     // Only set if no col element has already set it.
>                     if (m_width[cCol + i].isAuto() && w.type() != Auto) {
>-                        m_width[cCol + i].setValue(w.type(), w.rawValue() * eSpan / span);
>+                        m_width[cCol + i] = w;
>+                        m_width[cCol + i] *= eSpan / span;
>                         usedWidth += effWidth * eSpan / span;
>                     }
>                     usedSpan += eSpan;
>@@ -234,7 +236,7 @@ void FixedTableLayout::layout()
>     int autoSpan = 0;
>     int totalFixedWidth = 0;
>     int totalPercentWidth = 0;
>-    int totalRawPercent = 0;
>+    float totalPercent = 0;
> 
>     // Compute requirements and try to satisfy fixed and percent widths.
>     // Percentages are of the table's width, so for example
>@@ -247,7 +249,7 @@ void FixedTableLayout::layout()
>         } else if (m_width[i].isPercent()) {
>             calcWidth[i] = m_width[i].calcValue(tableLogicalWidth);
>             totalPercentWidth += calcWidth[i];
>-            totalRawPercent += m_width[i].rawValue();
>+            totalPercent += m_width[i].percent();
>         } else if (m_width[i].isAuto()) {
>             numAuto++;
>             autoSpan += m_table->spanOfEffCol(i);
>@@ -270,11 +272,11 @@ void FixedTableLayout::layout()
>                     }
>                 }
>             }
>-            if (totalRawPercent) {
>+            if (totalPercent) {
>                 totalPercentWidth = 0;
>                 for (int i = 0; i < nEffCols; i++) {
>                     if (m_width[i].isPercent()) {
>-                        calcWidth[i] = m_width[i].rawValue() * (tableLogicalWidth - totalFixedWidth) / totalRawPercent;
>+                        calcWidth[i] = m_width[i].percent() * (tableLogicalWidth - totalFixedWidth) / totalPercent;
>                         totalPercentWidth += calcWidth[i];
>                     }
>                 }
>Index: Source/WebCore/rendering/RenderTableSection.cpp
>===================================================================
>--- Source/WebCore/rendering/RenderTableSection.cpp	(revision 80381)
>+++ Source/WebCore/rendering/RenderTableSection.cpp	(working copy)
>@@ -199,7 +199,7 @@ void RenderTableSection::addCell(RenderT
>             switch (logicalHeight.type()) {
>                 case Percent:
>                     if (!(cRowLogicalHeight.isPercent()) ||
>-                        (cRowLogicalHeight.isPercent() && cRowLogicalHeight.rawValue() < logicalHeight.rawValue()))
>+                        (cRowLogicalHeight.isPercent() && cRowLogicalHeight.percent() < logicalHeight.percent()))
>                         m_grid[m_cRow].logicalHeight = logicalHeight;
>                         break;
>                 case Fixed:
>@@ -434,22 +434,22 @@ int RenderTableSection::layoutRows(int t
>             if (m_grid[r].logicalHeight.isAuto())
>                 numAuto++;
>             else if (m_grid[r].logicalHeight.isPercent())
>-                totalPercent += m_grid[r].logicalHeight.rawValue();
>+                totalPercent += m_grid[r].logicalHeight.percent();
>         }
>         if (totalPercent) {
>             // try to satisfy percent
>             int add = 0;
>-            totalPercent = min(totalPercent, 100 * percentScaleFactor);
>+            totalPercent = min(totalPercent, 100);
>             int rh = m_rowPos[1] - m_rowPos[0];
>             for (int r = 0; r < totalRows; r++) {
>                 if (totalPercent > 0 && m_grid[r].logicalHeight.isPercent()) {
>-                    int toAdd = min(dh, (totalHeight * m_grid[r].logicalHeight.rawValue() / (100 * percentScaleFactor)) - rh);
>+                    int toAdd = min(dh, static_cast<int>((totalHeight * m_grid[r].logicalHeight.percent() / 100) - rh));
>                     // If toAdd is negative, then we don't want to shrink the row (this bug
>                     // affected Outlook Web Access).
>                     toAdd = max(0, toAdd);
>                     add += toAdd;
>                     dh -= toAdd;
>-                    totalPercent -= m_grid[r].logicalHeight.rawValue();
>+                    totalPercent -= m_grid[r].logicalHeight.percent();
>                 }
>                 if (r < totalRows - 1)
>                     rh = m_rowPos[r + 2] - m_rowPos[r + 1];
>Index: Source/WebCore/rendering/style/BorderData.h
>===================================================================
>--- Source/WebCore/rendering/style/BorderData.h	(revision 80381)
>+++ Source/WebCore/rendering/style/BorderData.h	(working copy)
>@@ -49,13 +49,13 @@ public:
> 
>     bool hasBorderRadius() const
>     {
>-        if (m_topLeft.width().rawValue() > 0)
>+        if (!m_topLeft.width().isZero())
>             return true;
>-        if (m_topRight.width().rawValue() > 0)
>+        if (!m_topRight.width().isZero())
>             return true;
>-        if (m_bottomLeft.width().rawValue() > 0)
>+        if (!m_bottomLeft.width().isZero())
>             return true;
>-        if (m_bottomRight.width().rawValue() > 0)
>+        if (!m_bottomRight.width().isZero())
>             return true;
>         return false;
>     }
>Index: LayoutTests/ChangeLog
>===================================================================
>--- LayoutTests/ChangeLog	(revision 80665)
>+++ LayoutTests/ChangeLog	(working copy)
>@@ -1,3 +1,12 @@
>+2011-03-09  Rik Cabanier  <cabanier@gmail.com>
>+
>+        Reviewed by NOBODY (OOPS!).
>+
>+        bug 56052: percentages are incorrectly rounded in WebKit
>+        https://bugs.webkit.org/show_bug.cgi?id=56052
>+
>+        * platform/mac/fast/css/percentage-non-integer-expected.txt:
>+
> 2011-03-09  James Robinson  <jamesr@chromium.org>
> 
>         Reviewed by Kenneth Russell.
>Index: LayoutTests/platform/mac/fast/css/percentage-non-integer-expected.checksum
>===================================================================
>--- LayoutTests/platform/mac/fast/css/percentage-non-integer-expected.checksum	(revision 80381)
>+++ LayoutTests/platform/mac/fast/css/percentage-non-integer-expected.checksum	(working copy)
>@@ -1 +1 @@
>-414caaa2ee09823fcc6b1200d30ec127
>\ No newline at end of file
>+c6d9055341a9904929ccc49476c7bd9e
>\ No newline at end of file
>Index: LayoutTests/platform/mac/fast/css/percentage-non-integer-expected.txt
>===================================================================
>--- LayoutTests/platform/mac/fast/css/percentage-non-integer-expected.txt	(revision 80381)
>+++ LayoutTests/platform/mac/fast/css/percentage-non-integer-expected.txt	(working copy)
>@@ -29,7 +29,7 @@ layer at (0,0) size 800x585
>         RenderBlock {DIV} at (0,44) size 910x4
>           RenderBlock {DIV} at (0,0) size 100x4 [bgcolor=#0000007F]
>         RenderBlock {DIV} at (0,48) size 910x4
>-          RenderBlock {DIV} at (0,0) size 100x4 [bgcolor=#0000007F]
>+          RenderBlock {DIV} at (0,0) size 101x4 [bgcolor=#0000007F]
>         RenderBlock {DIV} at (0,52) size 900x4
>           RenderBlock {DIV} at (0,0) size 100x4 [bgcolor=#0000007F]
>         RenderBlock {DIV} at (0,56) size 890x4
>@@ -49,7 +49,7 @@ layer at (0,0) size 800x585
>         RenderBlock {DIV} at (0,84) size 840x4
>           RenderBlock {DIV} at (0,0) size 100x4 [bgcolor=#0000007F]
>         RenderBlock {DIV} at (0,88) size 835x4
>-          RenderBlock {DIV} at (0,0) size 100x4 [bgcolor=#0000007F]
>+          RenderBlock {DIV} at (0,0) size 101x4 [bgcolor=#0000007F]
>         RenderBlock {DIV} at (0,92) size 825x4
>           RenderBlock {DIV} at (0,0) size 100x4 [bgcolor=#0000007F]
>         RenderBlock {DIV} at (0,96) size 815x4
>@@ -84,61 +84,61 @@ layer at (8,126) size 1000x20
>   RenderTable {TABLE} at (0,0) size 1000x20
>     RenderTableSection {TBODY} at (0,0) size 1000x20
>       RenderTableRow {TR} at (0,0) size 1000x20
>-        RenderTableCell {TD} at (0,1) size 11x18 [bgcolor=#0000007F] [r=0 c=0 rs=1 cs=1]
>+        RenderTableCell {TD} at (0,1) size 12x18 [bgcolor=#0000007F] [r=0 c=0 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (11,1) size 10x18 [bgcolor=#00FF007F] [r=0 c=1 rs=1 cs=1]
>+        RenderTableCell {TD} at (12,1) size 10x18 [bgcolor=#00FF007F] [r=0 c=1 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (21,1) size 13x18 [bgcolor=#0000007F] [r=0 c=2 rs=1 cs=1]
>+        RenderTableCell {TD} at (22,1) size 13x18 [bgcolor=#0000007F] [r=0 c=2 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (34,1) size 10x18 [bgcolor=#00FF007F] [r=0 c=3 rs=1 cs=1]
>+        RenderTableCell {TD} at (35,1) size 10x18 [bgcolor=#00FF007F] [r=0 c=3 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (44,1) size 15x18 [bgcolor=#0000007F] [r=0 c=4 rs=1 cs=1]
>+        RenderTableCell {TD} at (45,1) size 16x18 [bgcolor=#0000007F] [r=0 c=4 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (59,1) size 10x18 [bgcolor=#00FF007F] [r=0 c=5 rs=1 cs=1]
>+        RenderTableCell {TD} at (61,1) size 10x18 [bgcolor=#00FF007F] [r=0 c=5 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (69,1) size 17x18 [bgcolor=#0000007F] [r=0 c=6 rs=1 cs=1]
>+        RenderTableCell {TD} at (71,1) size 17x18 [bgcolor=#0000007F] [r=0 c=6 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (86,1) size 10x18 [bgcolor=#00FF007F] [r=0 c=7 rs=1 cs=1]
>+        RenderTableCell {TD} at (88,1) size 10x18 [bgcolor=#00FF007F] [r=0 c=7 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (96,1) size 20x18 [bgcolor=#0000007F] [r=0 c=8 rs=1 cs=1]
>+        RenderTableCell {TD} at (98,1) size 20x18 [bgcolor=#0000007F] [r=0 c=8 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (116,1) size 10x18 [bgcolor=#00FF007F] [r=0 c=9 rs=1 cs=1]
>+        RenderTableCell {TD} at (118,1) size 10x18 [bgcolor=#00FF007F] [r=0 c=9 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (126,1) size 21x18 [bgcolor=#0000007F] [r=0 c=10 rs=1 cs=1]
>+        RenderTableCell {TD} at (128,1) size 22x18 [bgcolor=#0000007F] [r=0 c=10 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (147,1) size 10x18 [bgcolor=#00FF007F] [r=0 c=11 rs=1 cs=1]
>+        RenderTableCell {TD} at (150,1) size 10x18 [bgcolor=#00FF007F] [r=0 c=11 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (157,1) size 23x18 [bgcolor=#0000007F] [r=0 c=12 rs=1 cs=1]
>+        RenderTableCell {TD} at (160,1) size 24x18 [bgcolor=#0000007F] [r=0 c=12 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (180,10) size 10x0 [bgcolor=#00FF007F] [r=0 c=13 rs=1 cs=1]
>-        RenderTableCell {TD} at (190,1) size 25x18 [bgcolor=#0000007F] [r=0 c=14 rs=1 cs=1]
>+        RenderTableCell {TD} at (184,10) size 10x0 [bgcolor=#00FF007F] [r=0 c=13 rs=1 cs=1]
>+        RenderTableCell {TD} at (194,1) size 25x18 [bgcolor=#0000007F] [r=0 c=14 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (215,1) size 10x18 [bgcolor=#00FF007F] [r=0 c=15 rs=1 cs=1]
>+        RenderTableCell {TD} at (219,1) size 10x18 [bgcolor=#00FF007F] [r=0 c=15 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (225,1) size 27x18 [bgcolor=#0000007F] [r=0 c=16 rs=1 cs=1]
>+        RenderTableCell {TD} at (229,1) size 27x18 [bgcolor=#0000007F] [r=0 c=16 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (252,1) size 10x18 [bgcolor=#00FF007F] [r=0 c=17 rs=1 cs=1]
>+        RenderTableCell {TD} at (256,1) size 10x18 [bgcolor=#00FF007F] [r=0 c=17 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (262,1) size 30x18 [bgcolor=#0000007F] [r=0 c=18 rs=1 cs=1]
>+        RenderTableCell {TD} at (266,1) size 30x18 [bgcolor=#0000007F] [r=0 c=18 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>-        RenderTableCell {TD} at (292,1) size 708x18 [r=0 c=19 rs=1 cs=1]
>+        RenderTableCell {TD} at (296,1) size 704x18 [r=0 c=19 rs=1 cs=1]
>           RenderText {#text} at (0,0) size 4x18
>             text run at (0,0) width 4: " "
>Index: LayoutTests/platform/mac/fast/css/percentage-non-integer-expected.png
>===================================================================
>Cannot display: file marked as a binary type.
>svn:mime-type = image/png
>
>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
>IECAAAECiwkIIIt5WZoAAQIECBAgQIAAgSUEBJAl8P4cq548efLP8bAekwABAgQIECBAgMAkAgLI
>JIw2QoAAAQIECBAgQIDAaxEQQF6LkmUIECBAgAABAgQIEJhEQACZhNFGCBAgQIAAAQIECBB4LQIr
>W/1yuQVXTq5c7m73XWWBrbsvO66rXI2HI0CAAAECBAgQILCYgCMgi3lZmgABAgQIECBAgACBJQQE
>kCXwrEqAAAECBAgQIECAwGICAshiXpYmQIAAAQIECBAgQGAJAQFkCTyrEiBAgAABAgQIECCwmIAA
>spiXpQkQIECAAAECBAgQWEJAAFkCz6oECBAgQIAAAQIECCwmIIAs5mVpAgQIECBAgAABAgSWELji
>3wFZYttWJUCAAAECBAgQIECAwA4BR0B2cPiCAAECBAgQIECAAIHdFBBAdlPXtgkQIECAAAECBAgQ
>2CEggOzg8AUBAgQIECBAgAABArspIIDspq5tEyBAgAABAgQIECCwQ0AA2cHhCwIECBAgQIAAAQIE
>dlNAANlNXdsmQIAAAQIECBAgQGCHgACyg8MXBAgQIECAAAECBAjspoAAspu6tk2AAAECBAgQIECA
>wA4BAWQHhy8IECBAgAABAgQIENhNAQFkN3VtmwABAgQIECBAgACBHQICyA4OXxAgQIAAAQIECBAg
>sJsCAshu6to2AQIECBAgQIAAAQI7BASQHRy+IECAAAECBAgQIEBgNwUEkN3UtW0CBAgQIECAAAEC
>BHYICCA7OHxBgAABAgQIECBAgMBuCgggu6lr2wQIECBAgAABAgQI7BAQQHZw+IIAAQIECBAgQIAA
>gd0UmF1p4ysnV660yJ/uv6d/evefvpz7WSx3cu69l74j1tmtbY+PGI8Rlys9zj3DUov38Mpqw9W4
>javxWBkeN2oYe47PL9f39uUW/T6JbV/ucs9Fd86r4+Llpq4jyrj4Mf6ctUQ9cbln+PdP/2So6U/V
>DJ/ds63Iu++eV+BFK/mSAAECBAgQSCPgCEiaUSiEAAECBAgQIECAwN4XEED2/ox1SIAAAQIECBAg
>QCCNgACSZhQKIUCAAAECBAgQILD3BQSQvT9jHRIgQIAAAQIECBBIIyCApBmFQggQIECAAAECBAjs
>fQEBZO/PWIcECBAgQIAAAQIE0ggIIGlGoRACBAgQIECAAAECe19AANn7M9YhAQIECBAgQIAAgTQC
>AkiaUSiEAAECBAgQIECAwN4XEED2/ox1SIAAAQIECBAgQCCNgACSZhQKIUCAAAECBAgQILD3BQSQ
>vT9jHRIgQIAAAQIECBBIIyCApBmFQggQIECAAAECBAjsfQEBZO/PWIcECBAgQIAAAQIE0ggIIGlG
>oRACBAgQIECAAAECe19AANn7M9YhAQIECBAgQIAAgTQCAkiaUSiEAAECBAgQIECAwN4XEED2/ox1
>SIAAAQIECBAgQCCNgACSZhQKIUCAAAECBAgQILD3BVa2+mXvt6lDAgQIECBAgAABAgQyCDgCkmEK
>aiBAgAABAgQIECBQREAAKTJobRIgQIAAAQIECBDIICCAZJiCGggQIECAAAECBAgUERBAigxamwQI
>ECBAgAABAgQyCAggGaagBgIECBAgQIAAAQJFBASQIoPWJgECBAgQIECAAIEMAgJIhimogQABAgQI
>ECBAgEARAQGkyKC1SYAAAQIECBAgQCCDgACSYQpqIECAAAECBAgQIFBEQAApMmhtEiBAgAABAgQI
>EMggIIBkmIIaCBAgQIAAAQIECBQREECKDFqbBAgQIECAAAECBDIICCAZpqAGAgQIECBAgAABAkUE
>BJAig9YmAQIECBAgQIAAgQwCAkiGKaiBAAECBAgQIECAQBEBAaTIoLVJgAABAgQIECBAIIOAAJJh
>CmogQIAAAQIECBAgUERAACkyaG0SIECAAAECBAgQyCAggGSYghoIECBAgAABAgQIFBEQQIoMWpsE
>CBAgQIAAAQIEMggIIBmmoAYCBAgQIECAAAECRQQEkCKD1iYBAgQIECBAgACBDAICSIYpqIEAAQIE
>CBAgQIBAEQEBpMigtUmAAAECBAgQIEAgg4AAkmEKaiBAgAABAgQIECBQREAAKTJobRIgQIAAAQIE
>CBDIICCAZJiCGggQIECAAAECBAgUERBAigxamwQIECBAgAABAgQyCAggGaagBgIECBAgQIAAAQJF
>BASQIoPWJgECBAgQIECAAIEMAgJIhimogQABAgQIECBAgEARAQGkyKC1SYAAAQIECBAgQCCDgACS
>YQpqIECAAAECBAgQIFBEQAApMmhtEiBAgAABAgQIEMggIIBkmIIaCBAgQIAAAQIECBQREECKDFqb
>BAgQIECAAAECBDIICCAZpqAGAgQIECBAgAABAkUEBJAig9YmAQIECBAgQIAAgQwCAkiGKaiBAAEC
>BAgQIECAQBEBAaTIoLVJgAABAgQIECBAIIOAAJJhCmogQIAAAQIECBAgUERAACkyaG0SIECAAAEC
>BAgQyCAggGSYghoIECBAgAABAgQIFBEQQIoMWpsECBAgQIAAAQIEMggIIBmmoAYCBAgQIECAAAEC
>RQQEkCKD1iYBAgQIECBAgACBDAICSIYpqIEAAQIECBAgQIBAEQEBpMigtUmAAAECBAgQIEAgg4AA
>kmEKaiBAgAABAgQIECBQREAAKTJobRIgQIAAAQIECBDIICCAZJiCGggQIECAAAECBAgUERBAigxa
>mwQIECBAgAABAgQyCAggGaagBgIECBAgQIAAAQJFBASQIoPWJgECBAgQIECAAIEMAgJIhimogQAB
>AgQIECBAgEARAQGkyKC1SYAAAQIECBAgQCCDgACSYQpqIECAAAECBAgQIFBEQAApMmhtEiBAgAAB
>AgQIEMggIIBkmIIaCBAgQIAAAQIECBQREECKDFqbBAgQIECAAAECBDIICCAZpqAGAgQIECBAgAAB
>AkUEBJAig9YmAQIECBAgQIAAgQwCAkiGKaiBAAECBAgQIECAQBEBAaTIoLVJgAABAgQIECBAIIOA
>AJJhCmogQIAAAQIECBAgUERAACkyaG0SIECAAAECBAgQyCAggGSYghoIECBAgAABAgQIFBEQQIoM
>WpsECBAgQIAAAQIEMggIIBmmoAYCBAgQIECAAAECRQQEkCKD1iYBAgQIECBAgACBDAICSIYpqIEA
>AQIECBAgQIBAEQEBpMigtUmAAAECBAgQIEAgg4AAkmEKaiBAgAABAgQIECBQREAAKTJobRIgQIAA
>AQIECBDIICCAZJiCGggQIECAAAECBAgUERBAigxamwQIECBAgAABAgQyCAggGaagBgIECBAgQIAA
>AQJFBASQIoPWJgECBAgQIECAAIEMAgJIhimogQABAgQIECBAgEARAQGkyKC1SYAAAQIECBAgQCCD
>gACSYQpqIECAAAECBAgQIFBEQAApMmhtEiBAgAABAgQIEMggIIBkmIIaCBAgQIAAAQIECBQREECK
>DFqbBAgQIECAAAECBDIICCAZpqAGAgQIECBAgAABAkUEBJAig9YmAQIECBAgQIAAgQwCAkiGKaiB
>AAECBAgQIECAQBEBAaTIoLVJgAABAgQIECBAIIOAAJJhCmogQIAAAQIECBAgUERAACkyaG0SIECA
>AAECBAgQyCAggGSYghoIECBAgAABAgQIFBEQQIoMWpsECBAgQIAAAQIEMggIIBmmoAYCBAgQIECA
>AAECRQQEkCKD1iYBAgQIECBAgACBDAICSIYpqIEAAQIECBAgQIBAEQEBpMigtUmAAAECBAgQIEAg
>g4AAkmEKaiBAgAABAgQIECBQREAAKTJobRIgQIAAAQIECBDIICCAZJiCGggQIECAAAECBAgUERBA
>igxamwQIECBAgAABAgQyCAggGaagBgIECBAgQIAAAQJFBASQIoPWJgECBAgQIECAAIEMAgJIhimo
>gQABAgQIECBAgEARAQGkyKC1SYAAAQIECBAgQCCDgACSYQpqIECAAAECBAgQIFBEQAApMmhtEiBA
>gAABAgQIEMggIIBkmIIaCBAgQIAAAQIECBQREECKDFqbBAgQIECAAAECBDIICCAZpqAGAgQIECBA
>gAABAkUEBJAig9YmAQIECBAgQIAAgQwCAkiGKaiBAAECBAgQIECAQBEBAaTIoLVJgAABAgQIECBA
>IIOAAJJhCmogQIAAAQIECBAgUERAACkyaG0SIECAAAECBAgQyCAggGSYghoIECBAgAABAgQIFBEQ
>QIoMWpsECBAgQIAAAQIEMggIIBmmoAYCBAgQIECAAAECRQQEkCKD1iYBAgQIECBAgACBDAICSIYp
>qIEAAQIECBAgQIBAEQEBpMigtUmAAAECBAgQIEAgg4AAkmEKaiBAgAABAgQIECBQREAAKTJobRIg
>QIAAAQIECBDIICCAZJiCGggQIECAAAECBAgUERBAigxamwQIECBAgAABAgQyCAggGaagBgIECBAg
>QIAAAQJFBASQIoPWJgECBAgQIECAAIEMAgJIhimogQABAgQIECBAgEARAQGkyKC1SYAAAQIECBAg
>QCCDgACSYQpqIECAAAECBAgQIFBEQAApMmhtEiBAgAABAgQIEMggIIBkmIIaCBAgQIAAAQIECBQR
>EECKDFqbBAgQIECAAAECBDIICCAZpqAGAgQIECBAgAABAkUEBJAig9YmAQIECBAgQIAAgQwCAkiG
>KaiBAAECBAgQIECAQBEBAaTIoLVJgAABAgQIECBAIIOAAJJhCmogQIAAAQIECBAgUERAACkyaG0S
>IECAAAECBAgQyCAggGSYghoIECBAgAABAgQIFBEQQIoMWpsECBAgQIAAAQIEMggIIBmmoAYCBAgQ
>IECAAAECRQQEkCKD1iYBAgQIECBAgACBDAICSIYpqIEAAQIECBAgQIBAEQEBpMigtUmAAAECBAgQ
>IEAgg4AAkmEKaiBAgAABAgQIECBQREAAKTJobRIgQIAAAQIECBDIICCAZJiCGggQIECAAAECBAgU
>ERBAigxamwQIECBAgAABAgQyCAggGaagBgIECBAgQIAAAQJFBASQIoPWJgECBAgQIECAAIEMAgJI
>himogQABAgQIECBAgEARAQGkyKC1SYAAAQIECBAgQCCDgACSYQpqIECAAAECBAgQIFBEQAApMmht
>EiBAgAABAgQIEMggIIBkmIIaCBAgQIAAAQIECBQREECKDFqbBAgQIECAAAECBDIICCAZpqAGAgQI
>ECBAgAABAkUEBJAig9YmAQIECBAgQIAAgQwCAkiGKaiBAAECBAgQIECAQBEBAaTIoLVJgAABAgQI
>ECBAIIOAAJJhCmogQIAAAQIECBAgUERAACkyaG0SIECAAAECBAgQyCAggGSYghoIECBAgAABAgQI
>FBEQQIoMWpsECBAgQIAAAQIEMggIIBmmoAYCBAgQIECAAAECRQQEkCKD1iYBAgQIECBAgACBDAIC
>SIYpqIEAAQIECBAgQIBAEQEBpMigtUmAAAECBAgQIEAgg4AAkmEKaiBAgAABAgQIECBQREAAKTJo
>bRIgQIAAAQIECBDIICCAZJiCGggQIECAAAECBAgUERBAigxamwQIECBAgAABAgQyCAggGaagBgIE
>CBAgQIAAAQJFBASQIoPWJgECBAgQIECAAIEMAgJIhimogQABAgQIECBAgEARAQGkyKC1SYAAAQIE
>CBAgQCCDgACSYQpqIECAAAECBAgQIFBEQAApMmhtEiBAgAABAgQIEMggIIBkmIIaCBAgQIAAAQIE
>CBQREECKDFqbBAgQIECAAAECBDIICCAZpqAGAgQIECBAgAABAkUEBJAig9YmAQIECBAgQIAAgQwC
>AkiGKaiBAAECBAgQIECAQBEBAaTIoLVJgAABAgQIECBAIIOAAJJhCmogQIAAAQIECBAgUERAACky
>aG0SIECAAAECBAgQyCAggGSYghoIECBAgAABAgQIFBEQQIoMWpsECBAgQIAAAQIEMggIIBmmoAYC
>BAgQIECAAAECRQQEkCKD1iYBAgQIECBAgACBDAICSIYpqIEAAQIECBAgQIBAEQEBpMigtUmAAAEC
>BAgQIEAgg4AAkmEKaiBAgAABAgQIECBQREAAKTJobRIgQIAAAQIECBDIICCAZJiCGggQIECAAAEC
>BAgUERBAigxamwQIECBAgAABAgQyCAggGaagBgIECBAgQIAAAQJFBASQIoPWJgECBAgQIECAAIEM
>AgJIhimogQABAgQIECBAgEARAQGkyKC1SYAAAQIECBAgQCCDgACSYQpqIECAAAECBAgQIFBEQAAp
>MmhtEiBAgAABAgQIEMggIIBkmIIaCBAgQIAAAQIECBQREECKDFqbBAgQIECAAAECBDIICCAZpqAG
>AgQIECBAgAABAkUEBJAig9YmAQIECBAgQIAAgQwCAkiGKaiBAAECBAgQIECAQBEBAaTIoLVJgAAB
>AgQIECBAIIOAAJJhCmogQIAAAQIECBAgUERAACkyaG0SIECAAAECBAgQyCAggGSYghoIECBAgAAB
>AgQIFBEQQIoMWpsECBAgQIAAAQIEMggIIBmmoAYCBAgQIECAAAECRQQEkCKD1iYBAgQIECBAgACB
>DAICSIYpqIEAAQIECBAgQIBAEQEBpMigtUmAAAECBAgQIEAgg4AAkmEKaiBAgAABAgQIECBQREAA
>KTJobRIgQIAAAQIECBDIICCAZJiCGggQIECAAAECBAgUERBAigxamwQIECBAgAABAgQyCAggGaag
>BgIECBAgQIAAAQJFBASQIoPWJgECBAgQIECAAIEMAgJIhimogQABAgQIECBAgEARAQGkyKC1SYAA
>AQIECBAgQCCDgACSYQpqIECAAAECBAgQIFBEQAApMmhtEiBAgAABAgQIEMggIIBkmIIaCBAgQIAA
>AQIECBQREECKDFqbBAgQIECAAAECBDIICCAZpqAGAgQIECBAgAABAkUEBJAig9YmAQIECBAgQIAA
>gQwCAkiGKaiBAAECBAgQIECAQBEBAaTIoLVJgAABAgQIECBAIIOAAJJhCmogQIAAAQIECBAgUERA
>ACkyaG0SIECAAAECBAgQyCAggGSYghoIECBAgAABAgQIFBEQQIoMWpsECBAgQIAAAQIEMggIIBmm
>oAYCBAgQIECAAAECRQQEkCKD1iYBAgQIECBAgACBDAICSIYpqIEAAQIECBAgQIBAEQEBpMigtUmA
>AAECBAgQIEAgg4AAkmEKaiBAgAABAgQIECBQREAAKTJobRIgQIAAAQIECBDIICCAZJiCGggQIECA
>AAECBAgUERBAigxamwQIECBAgAABAgQyCAggGaagBgIECBAgQIAAAQJFBASQIoPWJgECBAgQIECA
>AIEMAgJIhimogQABAgQIECBAgEARAQGkyKC1SYAAAQIECBAgQCCDgACSYQpqIECAAAECBAgQIFBE
>QAApMmhtEiBAgAABAgQIEMggIIBkmIIaCBAgQIAAAQIECBQREECKDFqbBAgQIECAAAECBDIICCAZ
>pqAGAgQIECBAgAABAkUEBJAig9YmAQIECBAgQIAAgQwCAkiGKaiBAAECBAgQIECAQBEBAaTIoLVJ
>gAABAgQIECBAIIOAAJJhCmogQIAAAQIECBAgUERAACkyaG0SIECAAAECBAgQyCAggGSYghoIECBA
>gAABAgQIFBEQQIoMWpsECBAgQIAAAQIEMggIIBmmoAYCBAgQIECAAAECRQQEkCKD1iYBAgQIECBA
>gACBDAICSIYpqIEAAQIECBAgQIBAEQEBpMigtUmAAAECBAgQIEAgg4AAkmEKaiBAgAABAgQIECBQ
>REAAKTJobRIgQIAAAQIECBDIICCAZJiCGggQIECAAAECBAgUERBAigxamwQIECBAgAABAgQyCAgg
>GaagBgIECBAgQIAAAQJFBASQIoPWJgECBAgQIECAAIEMAgJIhimogQABAgQIECBAgEARAQGkyKC1
>SYAAAQIECBAgQCCDgACSYQpqIECAAAECBAgQIFBEQAApMmhtEiBAgAABAgQIEMggIIBkmIIaCBAg
>QIAAAQIECBQREECKDFqbBAgQIECAAAECBDIICCAZpqAGAgQIECBAgAABAkUEBJAig9YmAQIECBAg
>QIAAgQwCAkiGKaiBAAECBAgQIECAQBEBAaTIoLVJgAABAgQIECBAIIOAAJJhCmogQIAAAQIECBAg
>UERAACkyaG0SIECAAAECBAgQyCAggGSYghoIECBAgAABAgQIFBEQQIoMWpsECBAgQIAAAQIEMggI
>IBmmoAYCBAgQIECAAAECRQQEkCKD1iYBAgQIECBAgACBDAICSIYpqIEAAQIECFY6WxkAABdpSURB
>VBAgQIBAEQEBpMigtUmAAAECBAgQIEAgg4AAkmEKaiBAgAABAgQIECBQREAAKTJobRIgQIAAAQIE
>CBDIICCAZJiCGggQIECAAAECBAgUERBAigxamwQIECBAgAABAgQyCAggGaagBgIECBAgQIAAAQJF
>BASQIoPWJgECBAgQIECAAIEMAgJIhimogQABAgQIECBAgEARAQGkyKC1SYAAAQIECBAgQCCDgACS
>YQpqIECAAAECBAgQIFBEQAApMmhtEiBAgAABAgQIEMggIIBkmIIaCBAgQIAAAQIECBQREECKDFqb
>BAgQIECAAAECBDIICCAZpqAGAgQIECBAgAABAkUEBJAig9YmAQIECBAgQIAAgQwCAkiGKaiBAAEC
>BAgQIECAQBEBAaTIoLVJgAABAgQIECBAIIOAAJJhCmogQIAAAQIECBAgUERAACkyaG0SIECAAAEC
>BAgQyCAggGSYghoIECBAgAABAgQIFBEQQIoMWpsECBAgQIAAAQIEMggIIBmmoAYCBAgQIECAAAEC
>RQQEkCKD1iYBAgQIECBAgACBDAICSIYpqIEAAQIECBAgQIBAEQEBpMigtUmAAAECBAgQIEAgg4AA
>kmEKaiBAgAABAgQIECBQREAAKTJobRIgQIAAAQIECBDIICCAZJiCGggQIECAAAECBAgUERBAigxa
>mwQIECBAgAABAgQyCAggGaagBgIECBAgQIAAAQJFBASQIoPWJgECBAgQIECAAIEMAgJIhimogQAB
>AgQIECBAgEARAQGkyKC1SYAAAQIECBAgQCCDgACSYQpqIECAAAECBAgQIFBEQAApMmhtEiBAgAAB
>AgQIEMggIIBkmIIaCBAgQIAAAQIECBQREECKDFqbBAgQIECAAAECBDIICCAZpqAGAgQIECBAgAAB
>AkUEBJAig9YmAQIECBAgQIAAgQwCAkiGKaiBAAECBAgQIECAQBEBAaTIoLVJgAABAgQIECBAIIOA
>AJJhCmogQIAAAQIECBAgUERAACkyaG0SIECAAAECBAgQyCAggGSYghoIECBAgAABAgQIFBEQQIoM
>WpsECBAgQIAAAQIEMggIIBmmoAYCBAgQIECAAAECRQQEkCKD1iYBAgQIECBAgACBDAICSIYpqIEA
>AQIECBAgQIBAEQEBpMigtUmAAAECBAgQIEAgg4AAkmEKaiBAgAABAgQIECBQREAAKTJobRIgQIAA
>AQIECBDIICCAZJiCGggQIECAAAECBAgUERBAigxamwQIECBAgAABAgQyCAggGaagBgIECBAgQIAA
>AQJFBASQIoPWJgECBAgQIECAAIEMAgJIhimogQABAgQIECBAgEARAQGkyKC1SYAAAQIECBAgQCCD
>gACSYQpqIECAAAECBAgQIFBEQAApMmhtEiBAgAABAgQIEMggIIBkmIIaCBAgQIAAAQIECBQREECK
>DFqbBAgQIECAAAECBDIICCAZpqAGAgQIECBAgAABAkUEBJAig9YmAQIECBAgQIAAgQwCAkiGKaiB
>AAECBAgQIECAQBEBAaTIoLVJgAABAgQIECBAIIOAAJJhCmogQIAAAQIECBAgUERAACkyaG0SIECA
>AAECBAgQyCAggGSYghoIECBAgAABAgQIFBEQQIoMWpsECBAgQIAAAQIEMggIIBmmoAYCBAgQIECA
>AAECRQQEkCKD1iYBAgQIECBAgACBDAICSIYpqIEAAQIECBAgQIBAEQEBpMigtUmAAAECBAgQIEAg
>g4AAkmEKaiBAgAABAgQIECBQREAAKTJobRIgQIAAAQIECBDIICCAZJiCGggQIECAAAECBAgUERBA
>igxamwQIECBAgAABAgQyCAggGaagBgIECBAgQIAAAQJFBASQIoPWJgECBAgQIECAAIEMAgJIhimo
>gQABAgQIECBAgEARAQGkyKC1SYAAAQIECBAgQCCDgACSYQpqIECAAAECBAgQIFBEQAApMmhtEiBA
>gAABAgQIEMggIIBkmIIaCBAgQIAAAQIECBQREECKDFqbBAgQIECAAAECBDIICCAZpqAGAgQIECBA
>gAABAkUEBJAig9YmAQIECBAgQIAAgQwCAkiGKaiBAAECBAgQIECAQBEBAaTIoLVJgAABAgQIECBA
>IIOAAJJhCmogQIAAAQIECBAgUERAACkyaG0SIECAAAECBAgQyCAggGSYghoIECBAgAABAgQIFBEQ
>QIoMWpsECBAgQIAAAQIEMggIIBmmoAYCBAgQIECAAAECRQQEkCKD1iYBAgQIECBAgACBDAICSIYp
>qIEAAQIECBAgQIBAEQEBpMigtUmAAAECBAgQIEAgg4AAkmEKaiBAgAABAgQIECBQREAAKTJobRIg
>QIAAAQIECBDIICCAZJiCGggQIECAAAECBAgUERBAigxamwQIECBAgAABAgQyCAggGaagBgIECBAg
>QIAAAQJFBASQIoPWJgECBAgQIECAAIEMAgJIhimogQABAgQIECBAgEARAQGkyKC1SYAAAQIECBAg
>QCCDgACSYQpqIECAAAECBAgQIFBEQAApMmhtEiBAgAABAgQIEMggIIBkmIIaCBAgQIAAAQIECBQR
>EECKDFqbBAgQIECAAAECBDIICCAZpqAGAgQIECBAgAABAkUEBJAig9YmAQIECBAgQIAAgQwCAkiG
>KaiBAAECBAgQIECAQBEBAaTIoLVJgAABAgQIECBAIIOAAJJhCmogQIAAAQIECBAgUERAACkyaG0S
>IECAAAECBAgQyCAggGSYghoIECBAgAABAgQIFBEQQIoMWpsECBAgQIAAAQIEMggIIBmmoAYCBAgQ
>IECAAAECRQQEkCKD1iYBAgQIECBAgACBDAICSIYpqIEAAQIECBAgQIBAEQEBpMigtUmAAAECBAgQ
>IEAgg4AAkmEKaiBAgAABAgQIECBQREAAKTJobRIgQIAAAQIECBDIICCAZJiCGggQIECAAAECBAgU
>ERBAigxamwQIECBAgAABAgQyCAggGaagBgIECBAgQIAAAQJFBASQIoPWJgECBAgQIECAAIEMAgJI
>himogQABAgQIECBAgEARAQGkyKC1SYAAAQIECBAgQCCDgACSYQpqIECAAAECBAgQIFBEQAApMmht
>EiBAgAABAgQIEMggIIBkmIIaCBAgQIAAAQIECBQREECKDFqbBAgQIECAAAECBDIICCAZpqAGAgQI
>ECBAgAABAkUEBJAig9YmAQIECBAgQIAAgQwCAkiGKaiBAAECBAgQIECAQBEBAaTIoLVJgAABAgQI
>ECBAIIOAAJJhCmogQIAAAQIECBAgUERAACkyaG0SIECAAAECBAgQyCAggGSYghoIECBAgAABAgQI
>FBEQQIoMWpsECBAgQIAAAQIEMggIIBmmoAYCBAgQIECAAAECRQQEkCKD1iYBAgQIECBAgACBDAIC
>SIYpqIEAAQIECBAgQIBAEQEBpMigtUmAAAECBAgQIEAgg4AAkmEKaiBAgAABAgQIECBQREAAKTJo
>bRIgQIAAAQIECBDIICCAZJiCGggQIECAAAECBAgUERBAigxamwQIECBAgAABAgQyCAggGaagBgIE
>CBAgQIAAAQJFBASQIoPWJgECBAgQIECAAIEMArPvfve7bTabtbW1tba+vj7UtLW11VZXV9v58+db
>fB6Xs2fPttOnT1+4LZZ3IUCAAAECBAgQeLVA7EetrKwM+1jx+fjx6iXdQmB6gXPnzg378OP3YOzr
>j/v14z5+3Ddexv39+Dru3/71uMx4/dhjj7Wbb755/PJV17HdeKztl7GeuN7c3GyzjY2N9pa3vGV4
>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
>j8ge/w9MMxM6KtjTlQAAAABJRU5ErkJggg==
>
Comment 29 Rik Cabanier 2011-03-21 11:00:00 PDT
Created attachment 86335 [details]
updated per Simon's review
Comment 30 Eric Seidel (no email) 2011-03-21 11:00:28 PDT
Rik: How did you spam the bug like that?  Did a tool go haywire?

In any case, we should open a new bug for this (and we can dupe this one against that).

But this bug should be closed now that it's impossible to read.
Comment 31 Rik Cabanier 2011-03-21 11:06:54 PDT
(In reply to comment #30)
> Rik: How did you spam the bug like that?  Did a tool go haywire?
> 
> In any case, we should open a new bug for this (and we can dupe this one against that).
> 
> But this bug should be closed now that it's impossible to read.

Yes. Please close the bug and I'll open a new one.

I click on "edit attachment as comment" and submitted by accident :-(
Comment 32 Rik Cabanier 2011-03-21 15:09:56 PDT

*** This bug has been marked as a duplicate of bug 56758 ***
Comment 33 WebKit Review Bot 2011-03-21 18:06:28 PDT
http://trac.webkit.org/changeset/81625 might have broken Qt Linux Release
The following tests are not passing:
css2.1/t09-c5526c-display-00-e.html
Comment 34 Nico Weber 2011-04-21 14:20:28 PDT
This caused https://bugs.webkit.org/show_bug.cgi?id=59138
Comment 35 Marc-Antoine Ruel 2011-04-26 12:39:50 PDT
Comment on attachment 86335 [details]
updated per Simon's review 

View in context: https://bugs.webkit.org/attachment.cgi?id=86335&action=review

> Source/WebCore/platform/Length.h:198
> +        float fromValue = from.isZero() ? 0 : from.value();

This causes:
Source\WebCore\platform\Length.h(196) : warning C4244: 'initializing' : conversion from 'int' to 'float', possible loss of data

This is genuine since value() returns an int. Either change the type to int or use getFloatValue() or the thing that is the more sensible here as I'm not familiar with this code.
Comment 36 Rik Cabanier 2011-04-26 12:41:59 PDT
(In reply to comment #35)
> (From update of attachment 86335 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=86335&action=review
> 
> > Source/WebCore/platform/Length.h:198
> > +        float fromValue = from.isZero() ? 0 : from.value();
> 
> This causes:
> Source\WebCore\platform\Length.h(196) : warning C4244: 'initializing' : conversion from 'int' to 'float', possible loss of data
> 
> This is genuine since value() returns an int. Either change the type to int or use getFloatValue() or the thing that is the more sensible here as I'm not familiar with this code.

What platform are you seeing this on?