Changeset 156965 in webkit


Ignore:
Timestamp:
Oct 5, 2013 11:22:39 AM (11 years ago)
Author:
Darin Adler
Message:

Add AtomicString::number and use it
https://bugs.webkit.org/show_bug.cgi?id=122384

Reviewed by Anders Carlsson.

Source/WebCore:

  • css/CSSGrammar.y.in: Use AtomicString::number instead of String::number since

we are creating an AtomicString. This can save a memory allocation if the string
happens to already be in the atomic string table.

  • dom/Element.cpp:

(WebCore::Element::setIntegralAttribute): Ditto.
(WebCore::Element::setUnsignedIntegralAttribute): Ditto.

  • editing/BreakBlockquoteCommand.cpp:

(WebCore::BreakBlockquoteCommand::doApply): Ditto.

  • html/HTMLBodyElement.cpp:

(WebCore::HTMLBodyElement::insertedInto): Use setIntegralAttribute instead of
a local homegrown equivalent.

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::setHeight): Ditto.
(WebCore::HTMLCanvasElement::setWidth): Ditto.

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::setTabIndex): Ditto.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setHeight): Ditto.
(WebCore::HTMLImageElement::setWidth): Ditto.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::setMaxLength): Ditto.
(WebCore::HTMLInputElement::setSize): Same, but setUnsignedIntegralAttribute.
(WebCore::HTMLInputElement::setHeight): Ditto.
(WebCore::HTMLInputElement::setWidth): Ditto.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerSetSize): Ditto.

  • html/HTMLMeterElement.cpp:

(WebCore::HTMLMeterElement::setMin): More of the same.
(WebCore::HTMLMeterElement::setMax): Ditto.
(WebCore::HTMLMeterElement::setValue): Ditto.
(WebCore::HTMLMeterElement::setLow): Ditto.
(WebCore::HTMLMeterElement::setHigh): Ditto.
(WebCore::HTMLMeterElement::setOptimum): Ditto.

  • html/HTMLOListElement.cpp:

(WebCore::HTMLOListElement::setStart): Ditto.

  • html/HTMLProgressElement.cpp:

(WebCore::HTMLProgressElement::setValue): Ditto.
(WebCore::HTMLProgressElement::setMax): Ditto.

  • html/HTMLSelectElement.cpp:

(WebCore::HTMLSelectElement::parseAttribute): Ditto.
(WebCore::HTMLSelectElement::setSize): Ditto.

  • html/HTMLTableCellElement.cpp:

(WebCore::HTMLTableCellElement::setColSpan): Ditto.
(WebCore::HTMLTableCellElement::setRowSpan): Ditto.

  • html/HTMLTableColElement.cpp:

(WebCore::HTMLTableColElement::setSpan): Ditto.

  • html/HTMLTextAreaElement.cpp:

(WebCore::HTMLTextAreaElement::setMaxLength): Ditto.
(WebCore::HTMLTextAreaElement::setCols): Ditto.
(WebCore::HTMLTextAreaElement::setRows): Ditto.

  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlTimelineElement::setDuration): Ditto.

Source/WTF:

  • wtf/text/AtomicString.cpp:

(WTF::AtomicString::number): Added.

  • wtf/text/AtomicString.h: Ditto.
  • wtf/text/IntegerToStringConversion.h: Simplify includes, renamed ConversionTrait to

IntegerToStringConversionTrait. Changed String version to use String since we no longer
need to use PassRefPtr to efficiently handle return values. Replaced UnsignedIntegerTrait
with std::make_unsigned. Added AtomicString support. Use nullptr instead of 0.

Location:
trunk/Source
Files:
22 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WTF/ChangeLog

    r156964 r156965  
     12013-10-05  Darin Adler  <darin@apple.com>
     2
     3        Add AtomicString::number and use it
     4        https://bugs.webkit.org/show_bug.cgi?id=122384
     5
     6        Reviewed by Anders Carlsson.
     7
     8        * wtf/text/AtomicString.cpp:
     9        (WTF::AtomicString::number): Added.
     10        * wtf/text/AtomicString.h: Ditto.
     11
     12        * wtf/text/IntegerToStringConversion.h: Simplify includes, renamed ConversionTrait to
     13        IntegerToStringConversionTrait. Changed String version to use String since we no longer
     14        need to use PassRefPtr to efficiently handle return values. Replaced UnsignedIntegerTrait
     15        with std::make_unsigned. Added AtomicString support. Use nullptr instead of 0.
     16
    1172013-10-05  Darin Adler  <darin@apple.com>
    218
  • trunk/Source/WTF/wtf/text/AtomicString.cpp

    r155883 r156965  
    2222
    2323#include "config.h"
    24 
    2524#include "AtomicString.h"
    2625
    2726#include "AtomicStringTable.h"
     27#include "HashSet.h"
     28#include "IntegerToStringConversion.h"
    2829#include "StringHash.h"
    29 #include <wtf/HashSet.h>
    30 #include <wtf/Threading.h>
    31 #include <wtf/WTFThreadData.h>
     30#include "Threading.h"
     31#include "WTFThreadData.h"
     32#include "dtoa.h"
    3233#include <wtf/unicode/UTF8.h>
    3334
    3435#if USE(WEB_THREAD)
    35 #include <wtf/MainThread.h>
    36 #include <wtf/TCSpinLock.h>
     36#include "TCSpinLock.h"
    3737#endif
    3838
     
    4444
    4545#if USE(WEB_THREAD)
     46
    4647class AtomicStringTableLocker : public SpinLockHolder {
    4748    WTF_MAKE_NONCOPYABLE(AtomicStringTableLocker);
     
    5657
    5758SpinLock AtomicStringTableLocker::s_stringTableLock = SPINLOCK_INITIALIZER;
     59
    5860#else
    5961
     
    6264public:
    6365    AtomicStringTableLocker() { }
    64     ~AtomicStringTableLocker() { }
    65 };
     66};
     67
    6668#endif // USE(WEB_THREAD)
    6769
     
    462464}
    463465
     466AtomicString AtomicString::number(int number)
     467{
     468    return numberToStringSigned<AtomicString>(number);
     469}
     470
     471AtomicString AtomicString::number(unsigned number)
     472{
     473    return numberToStringUnsigned<AtomicString>(number);
     474}
     475
     476AtomicString AtomicString::number(double number)
     477{
     478    NumberToStringBuffer buffer;
     479    return String(numberToFixedPrecisionString(number, 6, buffer, true));
     480}
     481
    464482#if !ASSERT_DISABLED
    465483bool AtomicString::isInAtomicStringTable(StringImpl* string)
  • trunk/Source/WTF/wtf/text/AtomicString.h

    r156775 r156965  
    102102   
    103103    UChar operator[](unsigned int i) const { return m_string[i]; }
    104    
     104
     105    WTF_EXPORT_STRING_API static AtomicString number(int);
     106    WTF_EXPORT_STRING_API static AtomicString number(unsigned);
     107    WTF_EXPORT_STRING_API static AtomicString number(double);
     108    // If we need more overloads of the number function, we can add all the others that String has, but these seem to do for now.
     109
    105110    bool contains(UChar c) const { return m_string.contains(c); }
    106111    bool contains(const LChar* s, bool caseSensitive = true) const
  • trunk/Source/WTF/wtf/text/IntegerToStringConversion.h

    r127991 r156965  
    2323#define IntegerToStringConversion_h
    2424
    25 #include <wtf/text/StringBuilder.h>
    26 #include <wtf/text/StringImpl.h>
     25#include "StringBuilder.h"
    2726
    2827namespace WTF {
     
    3332};
    3433
    35 template<typename T> struct ConversionTrait;
     34template<typename T> struct IntegerToStringConversionTrait;
    3635
    37 template<> struct ConversionTrait<String> {
    38     typedef PassRefPtr<StringImpl> ReturnType;
     36template<> struct IntegerToStringConversionTrait<AtomicString> {
     37    typedef AtomicString ReturnType;
    3938    typedef void AdditionalArgumentType;
    40     static inline ReturnType flush(LChar* characters, unsigned length, void*) { return StringImpl::create(characters, length); }
     39    static ReturnType flush(LChar* characters, unsigned length, void*) { return AtomicString(characters, length); }
    4140};
    42 template<> struct ConversionTrait<StringBuilder> {
     41template<> struct IntegerToStringConversionTrait<String> {
     42    typedef String ReturnType;
     43    typedef void AdditionalArgumentType;
     44    static ReturnType flush(LChar* characters, unsigned length, void*) { return String(characters, length); }
     45};
     46template<> struct IntegerToStringConversionTrait<StringBuilder> {
    4347    typedef void ReturnType;
    4448    typedef StringBuilder AdditionalArgumentType;
    45     static inline ReturnType flush(LChar* characters, unsigned length, StringBuilder* stringBuilder) { stringBuilder->append(characters, length); }
     49    static ReturnType flush(LChar* characters, unsigned length, StringBuilder* stringBuilder) { stringBuilder->append(characters, length); }
    4650};
    4751
    48 template<typename T> struct UnsignedIntegerTrait;
    49 
    50 template<> struct UnsignedIntegerTrait<int> {
    51     typedef unsigned int Type;
    52 };
    53 template<> struct UnsignedIntegerTrait<long> {
    54     typedef unsigned long Type;
    55 };
    56 template<> struct UnsignedIntegerTrait<long long> {
    57     typedef unsigned long long Type;
    58 };
    59 
    60 template<typename T, typename UnsignedIntegerType, PositiveOrNegativeNumber NumberType>
    61 static typename ConversionTrait<T>::ReturnType numberToStringImpl(UnsignedIntegerType number, typename ConversionTrait<T>::AdditionalArgumentType* additionalArgument)
     52template<typename T, typename UnsignedIntegerType, PositiveOrNegativeNumber NumberType, typename AdditionalArgumentType>
     53static typename IntegerToStringConversionTrait<T>::ReturnType numberToStringImpl(UnsignedIntegerType number, AdditionalArgumentType additionalArgument)
    6254{
    6355    LChar buf[sizeof(UnsignedIntegerType) * 3 + 1];
     
    7365        *--p = '-';
    7466
    75     return ConversionTrait<T>::flush(p, static_cast<unsigned>(end - p), additionalArgument);
     67    return IntegerToStringConversionTrait<T>::flush(p, static_cast<unsigned>(end - p), additionalArgument);
    7668}
    7769
    7870template<typename T, typename SignedIntegerType>
    79 inline typename ConversionTrait<T>::ReturnType numberToStringSigned(SignedIntegerType number, typename ConversionTrait<T>::AdditionalArgumentType* additionalArgument = 0)
     71inline typename IntegerToStringConversionTrait<T>::ReturnType numberToStringSigned(SignedIntegerType number, typename IntegerToStringConversionTrait<T>::AdditionalArgumentType* additionalArgument = nullptr)
    8072{
    8173    if (number < 0)
    82         return numberToStringImpl<T, typename UnsignedIntegerTrait<SignedIntegerType>::Type, NegativeNumber>(-number, additionalArgument);
    83     return numberToStringImpl<T, typename UnsignedIntegerTrait<SignedIntegerType>::Type, PositiveNumber>(number, additionalArgument);
     74        return numberToStringImpl<T, typename std::make_unsigned<SignedIntegerType>::type, NegativeNumber>(-number, additionalArgument);
     75    return numberToStringImpl<T, typename std::make_unsigned<SignedIntegerType>::type, PositiveNumber>(number, additionalArgument);
    8476}
    8577
    8678template<typename T, typename UnsignedIntegerType>
    87 inline typename ConversionTrait<T>::ReturnType numberToStringUnsigned(UnsignedIntegerType number, typename ConversionTrait<T>::AdditionalArgumentType* additionalArgument = 0)
     79inline typename IntegerToStringConversionTrait<T>::ReturnType numberToStringUnsigned(UnsignedIntegerType number, typename IntegerToStringConversionTrait<T>::AdditionalArgumentType* additionalArgument = nullptr)
    8880{
    8981    return numberToStringImpl<T, UnsignedIntegerType, PositiveNumber>(number, additionalArgument);
  • trunk/Source/WebCore/ChangeLog

    r156964 r156965  
     12013-10-05  Darin Adler  <darin@apple.com>
     2
     3        Add AtomicString::number and use it
     4        https://bugs.webkit.org/show_bug.cgi?id=122384
     5
     6        Reviewed by Anders Carlsson.
     7
     8        * css/CSSGrammar.y.in: Use AtomicString::number instead of String::number since
     9        we are creating an AtomicString. This can save a memory allocation if the string
     10        happens to already be in the atomic string table.
     11        * dom/Element.cpp:
     12        (WebCore::Element::setIntegralAttribute): Ditto.
     13        (WebCore::Element::setUnsignedIntegralAttribute): Ditto.
     14        * editing/BreakBlockquoteCommand.cpp:
     15        (WebCore::BreakBlockquoteCommand::doApply): Ditto.
     16        * html/HTMLBodyElement.cpp:
     17        (WebCore::HTMLBodyElement::insertedInto): Use setIntegralAttribute instead of
     18        a local homegrown equivalent.
     19        * html/HTMLCanvasElement.cpp:
     20        (WebCore::HTMLCanvasElement::setHeight): Ditto.
     21        (WebCore::HTMLCanvasElement::setWidth): Ditto.
     22        * html/HTMLElement.cpp:
     23        (WebCore::HTMLElement::setTabIndex): Ditto.
     24        * html/HTMLImageElement.cpp:
     25        (WebCore::HTMLImageElement::setHeight): Ditto.
     26        (WebCore::HTMLImageElement::setWidth): Ditto.
     27        * html/HTMLInputElement.cpp:
     28        (WebCore::HTMLInputElement::setMaxLength): Ditto.
     29        (WebCore::HTMLInputElement::setSize): Same, but setUnsignedIntegralAttribute.
     30        (WebCore::HTMLInputElement::setHeight): Ditto.
     31        (WebCore::HTMLInputElement::setWidth): Ditto.
     32        * html/HTMLMediaElement.cpp:
     33        (WebCore::HTMLMediaElement::mediaPlayerSetSize): Ditto.
     34        * html/HTMLMeterElement.cpp:
     35        (WebCore::HTMLMeterElement::setMin): More of the same.
     36        (WebCore::HTMLMeterElement::setMax): Ditto.
     37        (WebCore::HTMLMeterElement::setValue): Ditto.
     38        (WebCore::HTMLMeterElement::setLow): Ditto.
     39        (WebCore::HTMLMeterElement::setHigh): Ditto.
     40        (WebCore::HTMLMeterElement::setOptimum): Ditto.
     41        * html/HTMLOListElement.cpp:
     42        (WebCore::HTMLOListElement::setStart): Ditto.
     43        * html/HTMLProgressElement.cpp:
     44        (WebCore::HTMLProgressElement::setValue): Ditto.
     45        (WebCore::HTMLProgressElement::setMax): Ditto.
     46        * html/HTMLSelectElement.cpp:
     47        (WebCore::HTMLSelectElement::parseAttribute): Ditto.
     48        (WebCore::HTMLSelectElement::setSize): Ditto.
     49        * html/HTMLTableCellElement.cpp:
     50        (WebCore::HTMLTableCellElement::setColSpan): Ditto.
     51        (WebCore::HTMLTableCellElement::setRowSpan): Ditto.
     52        * html/HTMLTableColElement.cpp:
     53        (WebCore::HTMLTableColElement::setSpan): Ditto.
     54        * html/HTMLTextAreaElement.cpp:
     55        (WebCore::HTMLTextAreaElement::setMaxLength): Ditto.
     56        (WebCore::HTMLTextAreaElement::setCols): Ditto.
     57        (WebCore::HTMLTextAreaElement::setRows): Ditto.
     58        * html/shadow/MediaControlElements.cpp:
     59        (WebCore::MediaControlTimelineElement::setDuration): Ditto.
     60
    1612013-10-05  Darin Adler  <darin@apple.com>
    262
  • trunk/Source/WebCore/css/CSSGrammar.y.in

    r156600 r156965  
    13101310        auto selector = std::make_unique<CSSParserSelector>();
    13111311        selector->setMatch(CSSSelector::PseudoClass);
    1312         selector->setArgument(String::number($4 * $5));
     1312        selector->setArgument(AtomicString::number($4 * $5));
    13131313        selector->setValue($2);
    13141314        if (selector->pseudoType() != CSSSelector::PseudoUnknown)
  • trunk/Source/WebCore/dom/Element.cpp

    r156940 r156965  
    25582558void Element::setIntegralAttribute(const QualifiedName& attributeName, int value)
    25592559{
    2560     // FIXME: Need an AtomicString version of String::number.
    2561     setAttribute(attributeName, String::number(value));
     2560    setAttribute(attributeName, AtomicString::number(value));
    25622561}
    25632562
     
    25692568void Element::setUnsignedIntegralAttribute(const QualifiedName& attributeName, unsigned value)
    25702569{
    2571     // FIXME: Need an AtomicString version of String::number.
    2572     setAttribute(attributeName, String::number(value));
     2570    setAttribute(attributeName, AtomicString::number(value));
    25732571}
    25742572
  • trunk/Source/WebCore/editing/BreakBlockquoteCommand.cpp

    r156289 r156965  
    151151                listChildNode = listChildNode->nextSibling();
    152152            if (listChildNode && listChildNode->renderer() && listChildNode->renderer()->isListItem())
    153                 setNodeAttribute(clonedChild, startAttr, String::number(toRenderListItem(listChildNode->renderer())->value()));
     153                setNodeAttribute(clonedChild, startAttr, AtomicString::number(toRenderListItem(listChildNode->renderer())->value()));
    154154        }
    155155           
  • trunk/Source/WebCore/html/HTMLBodyElement.cpp

    r156903 r156965  
    170170        int marginWidth = ownerFrameElement->marginWidth();
    171171        if (marginWidth != -1)
    172             setAttribute(marginwidthAttr, String::number(marginWidth));
     172            setIntegralAttribute(marginwidthAttr, marginWidth);
    173173        int marginHeight = ownerFrameElement->marginHeight();
    174174        if (marginHeight != -1)
    175             setAttribute(marginheightAttr, String::number(marginHeight));
     175            setIntegralAttribute(marginheightAttr, marginHeight);
    176176    }
    177177
  • trunk/Source/WebCore/html/HTMLCanvasElement.cpp

    r156778 r156965  
    154154void HTMLCanvasElement::setHeight(int value)
    155155{
    156     setAttribute(heightAttr, String::number(value));
     156    setIntegralAttribute(heightAttr, value);
    157157}
    158158
    159159void HTMLCanvasElement::setWidth(int value)
    160160{
    161     setAttribute(widthAttr, String::number(value));
     161    setIntegralAttribute(widthAttr, value);
    162162}
    163163
  • trunk/Source/WebCore/html/HTMLElement.cpp

    r156622 r156965  
    730730void HTMLElement::setTabIndex(int value)
    731731{
    732     setAttribute(tabindexAttr, String::number(value));
     732    setIntegralAttribute(tabindexAttr, value);
    733733}
    734734
  • trunk/Source/WebCore/html/HTMLImageElement.cpp

    r156950 r156965  
    335335void HTMLImageElement::setHeight(int value)
    336336{
    337     setAttribute(heightAttr, String::number(value));
     337    setIntegralAttribute(heightAttr, value);
    338338}
    339339
     
    350350void HTMLImageElement::setWidth(int value)
    351351{
    352     setAttribute(widthAttr, String::number(value));
     352    setIntegralAttribute(widthAttr, value);
    353353}
    354354
  • trunk/Source/WebCore/html/HTMLInputElement.cpp

    r156903 r156965  
    13131313        ec = INDEX_SIZE_ERR;
    13141314    else
    1315         setAttribute(maxlengthAttr, String::number(maxLength));
     1315        setIntegralAttribute(maxlengthAttr, maxLength);
    13161316}
    13171317
     
    13231323void HTMLInputElement::setSize(unsigned size)
    13241324{
    1325     setAttribute(sizeAttr, String::number(size));
     1325    setUnsignedIntegralAttribute(sizeAttr, size);
    13261326}
    13271327
     
    18811881void HTMLInputElement::setHeight(unsigned height)
    18821882{
    1883     setAttribute(heightAttr, String::number(height));
     1883    setUnsignedIntegralAttribute(heightAttr, height);
    18841884}
    18851885
    18861886void HTMLInputElement::setWidth(unsigned width)
    18871887{
    1888     setAttribute(widthAttr, String::number(width));
     1888    setUnsignedIntegralAttribute(widthAttr, width);
    18891889}
    18901890
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r156953 r156965  
    51145114void HTMLMediaElement::mediaPlayerSetSize(const IntSize& size)
    51155115{
    5116     setAttribute(widthAttr, String::number(size.width()));
    5117     setAttribute(heightAttr, String::number(size.height()));
     5116    setIntegralAttribute(widthAttr, size.width());
     5117    setIntegralAttribute(heightAttr, size.height());
    51185118}
    51195119
  • trunk/Source/WebCore/html/HTMLMeterElement.cpp

    r156622 r156965  
    9090        return;
    9191    }
    92     setAttribute(minAttr, String::number(min));
     92    setAttribute(minAttr, AtomicString::number(min));
    9393}
    9494
     
    104104        return;
    105105    }
    106     setAttribute(maxAttr, String::number(max));
     106    setAttribute(maxAttr, AtomicString::number(max));
    107107}
    108108
     
    119119        return;
    120120    }
    121     setAttribute(valueAttr, String::number(value));
     121    setAttribute(valueAttr, AtomicString::number(value));
    122122}
    123123
     
    134134        return;
    135135    }
    136     setAttribute(lowAttr, String::number(low));
     136    setAttribute(lowAttr, AtomicString::number(low));
    137137}
    138138
     
    149149        return;
    150150    }
    151     setAttribute(highAttr, String::number(high));
     151    setAttribute(highAttr, AtomicString::number(high));
    152152}
    153153
     
    164164        return;
    165165    }
    166     setAttribute(optimumAttr, String::number(optimum));
     166    setAttribute(optimumAttr, AtomicString::number(optimum));
    167167}
    168168
  • trunk/Source/WebCore/html/HTMLOListElement.cpp

    r155795 r156965  
    102102void HTMLOListElement::setStart(int start)
    103103{
    104     setAttribute(startAttr, String::number(start));
     104    setIntegralAttribute(startAttr, start);
    105105}
    106106
  • trunk/Source/WebCore/html/HTMLProgressElement.cpp

    r156622 r156965  
    108108        return;
    109109    }
    110     setAttribute(valueAttr, String::number(value >= 0 ? value : 0));
     110    setAttribute(valueAttr, AtomicString::number(value >= 0 ? value : 0));
    111111}
    112112
     
    123123        return;
    124124    }
    125     setAttribute(maxAttr, String::number(max > 0 ? max : 1));
     125    setAttribute(maxAttr, AtomicString::number(max > 0 ? max : 1));
    126126}
    127127
  • trunk/Source/WebCore/html/HTMLSelectElement.cpp

    r156903 r156965  
    299299        // This is important since the style rules for this attribute can determine the appearance property.
    300300        int size = value.toInt();
    301         String attrSize = String::number(size);
     301        AtomicString attrSize = AtomicString::number(size);
    302302        if (attrSize != value) {
    303303            // FIXME: This is horribly factored.
     
    417417void HTMLSelectElement::setSize(int size)
    418418{
    419     setAttribute(sizeAttr, String::number(size));
     419    setIntegralAttribute(sizeAttr, size);
    420420}
    421421
  • trunk/Source/WebCore/html/HTMLTableCellElement.cpp

    r156622 r156965  
    142142void HTMLTableCellElement::setColSpan(int n)
    143143{
    144     setAttribute(colspanAttr, String::number(n));
     144    setIntegralAttribute(colspanAttr, n);
    145145}
    146146
     
    152152void HTMLTableCellElement::setRowSpan(int n)
    153153{
    154     setAttribute(rowspanAttr, String::number(n));
     154    setIntegralAttribute(rowspanAttr, n);
    155155}
    156156
  • trunk/Source/WebCore/html/HTMLTableColElement.cpp

    r155791 r156965  
    9393void HTMLTableColElement::setSpan(int n)
    9494{
    95     setAttribute(spanAttr, String::number(n));
     95    setIntegralAttribute(spanAttr, n);
    9696}
    9797
  • trunk/Source/WebCore/html/HTMLTextAreaElement.cpp

    r156387 r156965  
    441441        ec = INDEX_SIZE_ERR;
    442442    else
    443         setAttribute(maxlengthAttr, String::number(newValue));
     443        setIntegralAttribute(maxlengthAttr, newValue);
    444444}
    445445
     
    499499void HTMLTextAreaElement::setCols(int cols)
    500500{
    501     setAttribute(colsAttr, String::number(cols));
     501    setIntegralAttribute(colsAttr, cols);
    502502}
    503503
    504504void HTMLTextAreaElement::setRows(int rows)
    505505{
    506     setAttribute(rowsAttr, String::number(rows));
     506    setIntegralAttribute(rowsAttr, rows);
    507507}
    508508
  • trunk/Source/WebCore/html/shadow/MediaControlElements.cpp

    r156761 r156965  
    978978void MediaControlTimelineElement::setDuration(double duration)
    979979{
    980     setAttribute(maxAttr, String::number(std::isfinite(duration) ? duration : 0));
     980    setAttribute(maxAttr, AtomicString::number(std::isfinite(duration) ? duration : 0));
    981981}
    982982
Note: See TracChangeset for help on using the changeset viewer.