⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 245504 in webkit


Ignore:
Timestamp:
May 19, 2019, 11:17:40 AM (7 years ago)
Author:
Darin Adler
Message:

Change String::number to use "shortest" instead of "fixed precision 6 digits"
https://bugs.webkit.org/show_bug.cgi?id=178319

Reviewed by Sam Weinig.

Source/WebCore:

  • accessibility/atk/WebKitAccessibleInterfaceValue.cpp:

(webkitAccessibleSetNewValue): Use String::numberToStringFixedPrecision
instead of String::number to be explicit about the fact that it's fixed precision.

  • page/linux/ResourceUsageOverlayLinux.cpp:

(gcTimerString): Ditto.

  • platform/graphics/ca/win/PlatformCALayerWin.cpp:

(printTransform): Use appendFixedPrecisionNumber instead of appendNumber
to be explicit about the fact that it's fixed precision.
(printLayer): Ditto.
(WebCore::PlatformCALayerWin::layerTreeAsString const): Ditto.

  • platform/graphics/freetype/FontCacheFreeType.cpp:

(buildVariationSettings): Ditto.

  • svg/SVGNumberList.h: Use appendFixedPrecisionNumber instead of appendNumber

to be explicit about the fact that it's fixed precision. We'll consider moving
to shortest later.

  • svg/SVGPathUtilities.cpp:

(WebCore::buildStringFromPath): Use appendNumberShortest instead of
appendNumberECMAScript since these are single-precision.

  • svg/SVGPointList.h: Use appendFixedPrecisionNumber instead of appendNumber

to be explicit about the fact that it's fixed precision. We'll consider moving
to shortest later.

  • svg/SVGTransformValue.h: Ditto.

Source/WTF:

  • wtf/text/StringBuilder.h: Delete appendNumber for floating point and

appendECMAScriptNumber for single-precision.

  • wtf/text/WTFString.h: Delete String::number for floating point and

numberToStringECMAScript for single-precision.

Tools:

  • TestWebKitAPI/Tests/WTF/WTFString.cpp:

(TestWebKitAPI::testStringNumberFixedPrecision): Use String::numberToStringFixedPrecision.

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:

(attributesOfElement): Use appendFixedPrecisionNumber.

Location:
trunk
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WTF/ChangeLog

    r245499 r245504  
     12019-05-19  Darin Adler  <darin@apple.com>
     2
     3        Change String::number to use "shortest" instead of "fixed precision 6 digits"
     4        https://bugs.webkit.org/show_bug.cgi?id=178319
     5
     6        Reviewed by Sam Weinig.
     7
     8        * wtf/text/StringBuilder.h: Delete appendNumber for floating point and
     9        appendECMAScriptNumber for single-precision.
     10
     11        * wtf/text/WTFString.h: Delete String::number for floating point and
     12        numberToStringECMAScript for single-precision.
     13
    1142019-05-18  Tadeu Zagallo  <tzagallo@apple.com>
    215
  • trunk/Source/WTF/wtf/text/StringBuilder.h

    r244429 r245504  
    223223    WTF_EXPORT_PRIVATE void appendNumber(long long);
    224224    WTF_EXPORT_PRIVATE void appendNumber(unsigned long long);
    225     // FIXME: Change appendNumber to be appendShortestFormNumber instead of appendFixedPrecisionNumber.
    226     void appendNumber(float);
    227     void appendNumber(double, unsigned precision = 6, TrailingZerosTruncatingPolicy = TruncateTrailingZeros);
     225    // FIXME: Change to call appendShortestFormNumber.
     226    void appendNumber(float) = delete;
     227    void appendNumber(double) = delete;
    228228
    229229    WTF_EXPORT_PRIVATE void appendShortestFormNumber(float);
     
    235235
    236236    // FIXME: Delete in favor of the name appendShortestFormNumber or just appendNumber.
    237     void appendECMAScriptNumber(float);
     237    void appendECMAScriptNumber(float) = delete;
    238238    void appendECMAScriptNumber(double);
    239239
     
    395395}
    396396
    397 inline void StringBuilder::appendNumber(float number)
    398 {
    399     appendFixedPrecisionNumber(number);
    400 }
    401 
    402 inline void StringBuilder::appendNumber(double number, unsigned precision, TrailingZerosTruncatingPolicy policy)
    403 {
    404     appendFixedPrecisionNumber(number, precision, policy);
    405 }
    406 
    407 inline void StringBuilder::appendECMAScriptNumber(float number)
    408 {
    409     // FIXME: This preserves existing behavior but is not what we want.
    410     // In the future, this should either be a compilation error or call appendShortestFormNumber without converting to double.
    411     appendShortestFormNumber(static_cast<double>(number));
    412 }
    413 
    414397inline void StringBuilder::appendECMAScriptNumber(double number)
    415398{
  • trunk/Source/WTF/wtf/text/WTFString.h

    r242592 r245504  
    180180    WTF_EXPORT_PRIVATE static String number(long long);
    181181    WTF_EXPORT_PRIVATE static String number(unsigned long long);
    182     // FIXME: Change number to be numberToStringShortest instead of numberToStringFixedPrecision.
    183     static String number(float);
    184     static String number(double, unsigned precision = 6, TrailingZerosTruncatingPolicy = TruncateTrailingZeros);
     182    // FIXME: Change to call numberToStringShortest.
     183    static String number(float) = delete;
     184    static String number(double) = delete;
    185185
    186186    WTF_EXPORT_PRIVATE static String numberToStringShortest(float);
     
    192192
    193193    // FIXME: Delete in favor of the name numberToStringShortest or just number.
    194     static String numberToStringECMAScript(float);
     194    static String numberToStringECMAScript(float) = delete;
    195195    static String numberToStringECMAScript(double);
    196196
     
    653653{
    654654    return startsWithLettersIgnoringASCIICase(string.impl(), lowercaseLetters);
    655 }
    656 
    657 inline String String::number(float number)
    658 {
    659     return numberToStringFixedPrecision(number);
    660 }
    661 
    662 inline String String::number(double number, unsigned precision, TrailingZerosTruncatingPolicy policy)
    663 {
    664     return numberToStringFixedPrecision(number, precision, policy);
    665 }
    666 
    667 inline String String::numberToStringECMAScript(float number)
    668 {
    669     // FIXME: This preserves existing behavior but is not what we want.
    670     // In the future, this should either be a compilation error or call numberToStringShortest without converting to double.
    671     return numberToStringShortest(static_cast<double>(number));
    672655}
    673656
  • trunk/Source/WebCore/ChangeLog

    r245502 r245504  
     12019-05-19  Darin Adler  <darin@apple.com>
     2
     3        Change String::number to use "shortest" instead of "fixed precision 6 digits"
     4        https://bugs.webkit.org/show_bug.cgi?id=178319
     5
     6        Reviewed by Sam Weinig.
     7
     8        * accessibility/atk/WebKitAccessibleInterfaceValue.cpp:
     9        (webkitAccessibleSetNewValue): Use String::numberToStringFixedPrecision
     10        instead of String::number to be explicit about the fact that it's fixed precision.
     11        * page/linux/ResourceUsageOverlayLinux.cpp:
     12        (gcTimerString): Ditto.
     13
     14        * platform/graphics/ca/win/PlatformCALayerWin.cpp:
     15        (printTransform): Use appendFixedPrecisionNumber instead of appendNumber
     16        to be explicit about the fact that it's fixed precision.
     17        (printLayer): Ditto.
     18        (WebCore::PlatformCALayerWin::layerTreeAsString const): Ditto.
     19        * platform/graphics/freetype/FontCacheFreeType.cpp:
     20        (buildVariationSettings): Ditto.
     21
     22        * svg/SVGNumberList.h: Use appendFixedPrecisionNumber instead of appendNumber
     23        to be explicit about the fact that it's fixed precision. We'll consider moving
     24        to shortest later.
     25
     26        * svg/SVGPathUtilities.cpp:
     27        (WebCore::buildStringFromPath): Use appendNumberShortest instead of
     28        appendNumberECMAScript since these are single-precision.
     29
     30        * svg/SVGPointList.h: Use appendFixedPrecisionNumber instead of appendNumber
     31        to be explicit about the fact that it's fixed precision. We'll consider moving
     32        to shortest later.
     33        * svg/SVGTransformValue.h: Ditto.
     34
    1352019-05-19  Simon Fraser  <simon.fraser@apple.com>
    236
  • trunk/Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceValue.cpp

    r243970 r245504  
    5050    value = std::min(static_cast<double>(coreObject->maxValueForRange()), newValue);
    5151
    52     coreObject->setValue(String::number(value));
     52    coreObject->setValue(String::numberToStringFixedPrecision(value));
    5353    return TRUE;
    5454}
  • trunk/Source/WebCore/page/linux/ResourceUsageOverlayLinux.cpp

    r242308 r245504  
    6565    if (std::isnan(timerFireDate))
    6666        return "[not scheduled]"_s;
    67     return String::number((timerFireDate - now).seconds());
     67    return String::numberToStringFixedPrecision((timerFireDate - now).seconds());
    6868}
    6969
  • trunk/Source/WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp

    r240918 r245504  
    705705{
    706706    builder.append('[');
    707     builder.appendNumber(transform.m11);
    708     builder.append(' ');
    709     builder.appendNumber(transform.m12);
    710     builder.append(' ');
    711     builder.appendNumber(transform.m13);
    712     builder.append(' ');
    713     builder.appendNumber(transform.m14);
     707    builder.appendFixedPrecisionNumber(transform.m11);
     708    builder.append(' ');
     709    builder.appendFixedPrecisionNumber(transform.m12);
     710    builder.append(' ');
     711    builder.appendFixedPrecisionNumber(transform.m13);
     712    builder.append(' ');
     713    builder.appendFixedPrecisionNumber(transform.m14);
    714714    builder.append("; ");
    715     builder.appendNumber(transform.m21);
    716     builder.append(' ');
    717     builder.appendNumber(transform.m22);
    718     builder.append(' ');
    719     builder.appendNumber(transform.m23);
    720     builder.append(' ');
    721     builder.appendNumber(transform.m24);
     715    builder.appendFixedPrecisionNumber(transform.m21);
     716    builder.append(' ');
     717    builder.appendFixedPrecisionNumber(transform.m22);
     718    builder.append(' ');
     719    builder.appendFixedPrecisionNumber(transform.m23);
     720    builder.append(' ');
     721    builder.appendFixedPrecisionNumber(transform.m24);
    722722    builder.append("; ");
    723     builder.appendNumber(transform.m31);
    724     builder.append(' ');
    725     builder.appendNumber(transform.m32);
    726     builder.append(' ');
    727     builder.appendNumber(transform.m33);
    728     builder.append(' ');
    729     builder.appendNumber(transform.m34);
     723    builder.appendFixedPrecisionNumber(transform.m31);
     724    builder.append(' ');
     725    builder.appendFixedPrecisionNumber(transform.m32);
     726    builder.append(' ');
     727    builder.appendFixedPrecisionNumber(transform.m33);
     728    builder.append(' ');
     729    builder.appendFixedPrecisionNumber(transform.m34);
    730730    builder.append("; ");
    731     builder.appendNumber(transform.m41);
    732     builder.append(' ');
    733     builder.appendNumber(transform.m42);
    734     builder.append(' ');
    735     builder.appendNumber(transform.m43);
    736     builder.append(' ');
    737     builder.appendNumber(transform.m44);
     731    builder.appendFixedPrecisionNumber(transform.m41);
     732    builder.append(' ');
     733    builder.appendFixedPrecisionNumber(transform.m42);
     734    builder.append(' ');
     735    builder.appendFixedPrecisionNumber(transform.m43);
     736    builder.append(' ');
     737    builder.appendFixedPrecisionNumber(transform.m44);
    738738    builder.append(']');
    739739}
     
    786786    builder.append(layerTypeName);
    787787    builder.append(" [");
    788     builder.appendNumber(layerPosition.x());
    789     builder.append(' ');
    790     builder.appendNumber(layerPosition.y());
    791     builder.append(' ');
    792     builder.appendNumber(layerPosition.z());
     788    builder.appendFixedPrecisionNumber(layerPosition.x());
     789    builder.append(' ');
     790    builder.appendFixedPrecisionNumber(layerPosition.y());
     791    builder.append(' ');
     792    builder.appendFixedPrecisionNumber(layerPosition.z());
    793793    builder.append("] [");
    794     builder.appendNumber(layerBounds.x());
    795     builder.append(' ');
    796     builder.appendNumber(layerBounds.y());
    797     builder.append(' ');
    798     builder.appendNumber(layerBounds.width());
    799     builder.append(' ');
    800     builder.appendNumber(layerBounds.height());
     794    builder.appendFixedPrecisionNumber(layerBounds.x());
     795    builder.append(' ');
     796    builder.appendFixedPrecisionNumber(layerBounds.y());
     797    builder.append(' ');
     798    builder.appendFixedPrecisionNumber(layerBounds.width());
     799    builder.append(' ');
     800    builder.appendFixedPrecisionNumber(layerBounds.height());
    801801    builder.append("] [");
    802     builder.appendNumber(layerAnchorPoint.x());
    803     builder.append(' ');
    804     builder.appendNumber(layerAnchorPoint.y());
    805     builder.append(' ');
    806     builder.appendNumber(layerAnchorPoint.z());
     802    builder.appendFixedPrecisionNumber(layerAnchorPoint.x());
     803    builder.append(' ');
     804    builder.appendFixedPrecisionNumber(layerAnchorPoint.y());
     805    builder.append(' ');
     806    builder.appendFixedPrecisionNumber(layerAnchorPoint.z());
    807807    builder.append("] superlayer=");
    808808    builder.appendNumber(reinterpret_cast<unsigned long long>(layer->superlayer()));
     
    823823        printIndent(builder, indent + 1);
    824824        builder.append("(borderWidth ");
    825         builder.appendNumber(borderWidth);
     825        builder.appendFixedPrecisionNumber(borderWidth);
    826826        builder.append(')');
    827827    }
     
    852852        printIndent(builder, indent + 1);
    853853        builder.append("(opacity ");
    854         builder.appendNumber(layerOpacity);
     854        builder.appendFixedPrecisionNumber(layerOpacity);
    855855        builder.append(')');
    856856    }
     
    928928    StringBuilder builder;
    929929    builder.append("\n\n** Render tree at time ");
    930     builder.appendNumber(MonotonicTime::now().secondsSinceEpoch().seconds());
     930    builder.appendFixedPrecisionNumber(MonotonicTime::now().secondsSinceEpoch().seconds());
    931931    builder.append(" (bounds ");
    932     builder.appendNumber(rootBounds.origin.x);
     932    builder.appendFixedPrecisionNumber(rootBounds.origin.x);
    933933    builder.append(", ");
    934     builder.appendNumber(rootBounds.origin.y);
    935     builder.append(' ');
    936     builder.appendNumber(rootBounds.size.width);
     934    builder.appendFixedPrecisionNumber(rootBounds.origin.y);
     935    builder.append(' ');
     936    builder.appendFixedPrecisionNumber(rootBounds.size.width);
    937937    builder.append('x');
    938     builder.appendNumber(rootBounds.size.height);
     938    builder.appendFixedPrecisionNumber(rootBounds.size.height);
    939939    builder.append(") **\n\n");
    940940
  • trunk/Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp

    r241012 r245504  
    523523        builder.append(variation.key[3]);
    524524        builder.append('=');
    525         builder.appendNumber(variation.value);
     525        builder.appendFixedPrecisionNumber(variation.value);
    526526    }
    527527    return builder.toString();
  • trunk/Source/WebCore/svg/SVGNumberList.h

    r243362 r245504  
    7979                builder.append(' ');
    8080
    81             builder.appendNumber(number->value());
     81            builder.appendFixedPrecisionNumber(number->value());
    8282        }
    8383
  • trunk/Source/WebCore/svg/SVGPathUtilities.cpp

    r243555 r245504  
    6161            case PathElementMoveToPoint:
    6262                builder.append('M');
    63                 builder.appendECMAScriptNumber(element.points[0].x());
    64                 builder.append(' ');
    65                 builder.appendECMAScriptNumber(element.points[0].y());
     63                builder.appendShortestFormNumber(element.points[0].x());
     64                builder.append(' ');
     65                builder.appendShortestFormNumber(element.points[0].y());
    6666                break;
    6767            case PathElementAddLineToPoint:
    6868                builder.append('L');
    69                 builder.appendECMAScriptNumber(element.points[0].x());
    70                 builder.append(' ');
    71                 builder.appendECMAScriptNumber(element.points[0].y());
     69                builder.appendShortestFormNumber(element.points[0].x());
     70                builder.append(' ');
     71                builder.appendShortestFormNumber(element.points[0].y());
    7272                break;
    7373            case PathElementAddQuadCurveToPoint:
    7474                builder.append('Q');
    75                 builder.appendECMAScriptNumber(element.points[0].x());
    76                 builder.append(' ');
    77                 builder.appendECMAScriptNumber(element.points[0].y());
     75                builder.appendShortestFormNumber(element.points[0].x());
     76                builder.append(' ');
     77                builder.appendShortestFormNumber(element.points[0].y());
    7878                builder.append(',');
    79                 builder.appendECMAScriptNumber(element.points[1].x());
    80                 builder.append(' ');
    81                 builder.appendECMAScriptNumber(element.points[1].y());
     79                builder.appendShortestFormNumber(element.points[1].x());
     80                builder.append(' ');
     81                builder.appendShortestFormNumber(element.points[1].y());
    8282                break;
    8383            case PathElementAddCurveToPoint:
    8484                builder.append('C');
    85                 builder.appendECMAScriptNumber(element.points[0].x());
    86                 builder.append(' ');
    87                 builder.appendECMAScriptNumber(element.points[0].y());
     85                builder.appendShortestFormNumber(element.points[0].x());
     86                builder.append(' ');
     87                builder.appendShortestFormNumber(element.points[0].y());
    8888                builder.append(',');
    89                 builder.appendECMAScriptNumber(element.points[1].x());
    90                 builder.append(' ');
    91                 builder.appendECMAScriptNumber(element.points[1].y());
     89                builder.appendShortestFormNumber(element.points[1].x());
     90                builder.append(' ');
     91                builder.appendShortestFormNumber(element.points[1].y());
    9292                builder.append(',');
    93                 builder.appendECMAScriptNumber(element.points[2].x());
    94                 builder.append(' ');
    95                 builder.appendECMAScriptNumber(element.points[2].y());
     93                builder.appendShortestFormNumber(element.points[2].x());
     94                builder.append(' ');
     95                builder.appendShortestFormNumber(element.points[2].y());
    9696                break;
    9797            case PathElementCloseSubpath:
  • trunk/Source/WebCore/svg/SVGPointList.h

    r243336 r245504  
    9494                builder.append(' ');
    9595
    96             builder.appendNumber(point->x());
     96            builder.appendFixedPrecisionNumber(point->x());
    9797            builder.append(' ');
    98             builder.appendNumber(point->y());
     98            builder.appendFixedPrecisionNumber(point->y());
    9999        }
    100100
  • trunk/Source/WebCore/svg/SVGTransformValue.h

    r243730 r245504  
    230230
    231231private:
    232     static void appendNumbers(StringBuilder& builder)
     232    static void appendFixedPrecisionNumbers(StringBuilder& builder)
    233233    {
    234234        builder.append(')');
     
    236236
    237237    template<typename Number, typename... Numbers>
    238     static void appendNumbers(StringBuilder& builder, Number number, Numbers... numbers)
     238    static void appendFixedPrecisionNumbers(StringBuilder& builder, Number number, Numbers... numbers)
    239239    {
    240240        if (builder.length() && builder[builder.length() - 1] != '(')
    241241            builder.append(' ');
    242         builder.appendNumber(number);
    243         appendNumbers(builder, numbers...);
     242        builder.appendFixedPrecisionNumber(number);
     243        appendFixedPrecisionNumbers(builder, numbers...);
    244244    }
    245245
    246246    void appendMatrix(StringBuilder& builder) const
    247247    {
    248         appendNumbers(builder, m_matrix->a(), m_matrix->b(), m_matrix->c(), m_matrix->d(), m_matrix->e(), m_matrix->f());
     248        appendFixedPrecisionNumbers(builder, m_matrix->a(), m_matrix->b(), m_matrix->c(), m_matrix->d(), m_matrix->e(), m_matrix->f());
    249249    }
    250250
    251251    void appendTranslate(StringBuilder& builder) const
    252252    {
    253         appendNumbers(builder, m_matrix->e(), m_matrix->f());
     253        appendFixedPrecisionNumbers(builder, m_matrix->e(), m_matrix->f());
    254254    }
    255255
    256256    void appendScale(StringBuilder& builder) const
    257257    {
    258         appendNumbers(builder, m_matrix->value().xScale(), m_matrix->value().yScale());
     258        appendFixedPrecisionNumbers(builder, m_matrix->value().xScale(), m_matrix->value().yScale());
    259259    }
    260260
     
    269269
    270270        if (cx || cy)
    271             appendNumbers(builder, m_angle, cx, cy);
     271            appendFixedPrecisionNumbers(builder, m_angle, cx, cy);
    272272        else
    273             appendNumbers(builder, m_angle);
     273            appendFixedPrecisionNumbers(builder, m_angle);
    274274    }
    275275
    276276    void appendSkewX(StringBuilder& builder) const
    277277    {
    278         appendNumbers(builder, m_angle);
     278        appendFixedPrecisionNumbers(builder, m_angle);
    279279    }
    280280
    281281    void appendSkewY(StringBuilder& builder) const
    282282    {
    283         appendNumbers(builder, m_angle);
     283        appendFixedPrecisionNumbers(builder, m_angle);
    284284    }
    285285
  • trunk/Tools/ChangeLog

    r245500 r245504  
     12019-05-19  Darin Adler  <darin@apple.com>
     2
     3        Change String::number to use "shortest" instead of "fixed precision 6 digits"
     4        https://bugs.webkit.org/show_bug.cgi?id=178319
     5
     6        Reviewed by Sam Weinig.
     7
     8        * TestWebKitAPI/Tests/WTF/WTFString.cpp:
     9        (TestWebKitAPI::testStringNumberFixedPrecision): Use String::numberToStringFixedPrecision.
     10
     11        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
     12        (attributesOfElement): Use appendFixedPrecisionNumber.
     13
    1142019-05-18  Jiewen Tan  <jiewen_tan@apple.com>
    215
  • trunk/Tools/TestWebKitAPI/Tests/WTF/WTFString.cpp

    r237990 r245504  
    7575{
    7676    static char testBuffer[100] = { };
    77     std::strncpy(testBuffer, String::number(number).utf8().data(), 99);
     77    std::strncpy(testBuffer, String::numberToStringFixedPrecision(number).utf8().data(), 99);
    7878    return testBuffer;
    7979}
  • trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp

    r244538 r245504  
    632632
    633633    builder.appendLiteral("AXPosition:  { ");
    634     builder.appendNumber(element->x(), 6, KeepTrailingZeros);
     634    builder.appendFixedPrecisionNumber(element->x(), 6, KeepTrailingZeros);
    635635    builder.appendLiteral(", ");
    636     builder.appendNumber(element->y(), 6, KeepTrailingZeros);
     636    builder.appendFixedPrecisionNumber(element->y(), 6, KeepTrailingZeros);
    637637    builder.appendLiteral(" }\n");
    638638
    639639    builder.appendLiteral("AXSize: { ");
    640     builder.appendNumber(element->width(), 6, KeepTrailingZeros);
     640    builder.appendFixedPrecisionNumber(element->width(), 6, KeepTrailingZeros);
    641641    builder.appendLiteral(", ");
    642     builder.appendNumber(element->height(), 6, KeepTrailingZeros);
     642    builder.appendFixedPrecisionNumber(element->height(), 6, KeepTrailingZeros);
    643643    builder.appendLiteral(" }\n");
    644644
Note: See TracChangeset for help on using the changeset viewer.