Changeset 53893 in webkit


Ignore:
Timestamp:
Jan 26, 2010 8:45:37 PM (14 years ago)
Author:
tkent@chromium.org
Message:

2010-01-26 Kent Tamura <tkent@chromium.org>

Reviewed by Darin Adler.

HTMLInputElement::valueAsNumber support except type=datetime-local.
https://bugs.webkit.org/show_bug.cgi?id=32696

input-valueasnumber-datetime-expected.txt and
input-valueasnumber-time-expected.txt have FAIL lines because they
test unimplemented features.

  • fast/forms/input-valueasnumber-date-expected.txt: Added.
  • fast/forms/input-valueasnumber-date.html: Added.
  • fast/forms/input-valueasnumber-datetime-expected.txt: Added.
  • fast/forms/input-valueasnumber-datetime.html: Added.
  • fast/forms/input-valueasnumber-month-expected.txt: Added.
  • fast/forms/input-valueasnumber-month.html: Added.
  • fast/forms/input-valueasnumber-number-expected.txt: Added.
  • fast/forms/input-valueasnumber-number.html: Added.
  • fast/forms/input-valueasnumber-range-expected.txt: Added.
  • fast/forms/input-valueasnumber-range.html: Added.
  • fast/forms/input-valueasnumber-time-expected.txt: Added.
  • fast/forms/input-valueasnumber-time.html: Added.
  • fast/forms/input-valueasnumber-unsupported-expected.txt: Added.
  • fast/forms/input-valueasnumber-unsupported.html: Added.
  • fast/forms/input-valueasnumber-week-expected.txt: Added.
  • fast/forms/input-valueasnumber-week.html: Added.
  • fast/forms/script-tests/input-valueasnumber-date.js: Added.
  • fast/forms/script-tests/input-valueasnumber-datetime.js: Added.
  • fast/forms/script-tests/input-valueasnumber-month.js: Added.
  • fast/forms/script-tests/input-valueasnumber-number.js: Added.
  • fast/forms/script-tests/input-valueasnumber-range.js: Added.
  • fast/forms/script-tests/input-valueasnumber-time.js: Added.
  • fast/forms/script-tests/input-valueasnumber-unsupported.js: Added.
  • fast/forms/script-tests/input-valueasnumber-week.js: Added.

2010-01-26 Kent Tamura <tkent@chromium.org>

Reviewed by Darin Adler.

HTMLInputElement::valueAsNumber support except type=datetime-local.
https://bugs.webkit.org/show_bug.cgi?id=32696

Tests: fast/forms/input-valueasnumber-date.html

fast/forms/input-valueasnumber-datetime.html
fast/forms/input-valueasnumber-month.html
fast/forms/input-valueasnumber-number.html
fast/forms/input-valueasnumber-range.html
fast/forms/input-valueasnumber-time.html
fast/forms/input-valueasnumber-unsupported.html
fast/forms/input-valueasnumber-week.html

  • html/HTMLInputElement.cpp: (WebCore::HTMLInputElement::valueAsNumber): According to the specification, we should return NaN for invalid values. (WebCore::HTMLInputElement::setValueAsNumber): According to the specification, throws NOT_SUPPORTED_ERR for Infinitiy or NaN, and throws INVALID_STATE_ERR for unsupported types. (WebCore::HTMLInputElement::formStringToDouble): According to the step 14 of Real Number in the specification, we should round -0 to 0.
  • html/HTMLInputElement.h: Declare valueAsNumber() and setValueAsNumber().
  • html/HTMLInputElement.idl: Add valueAsNumber.
Location:
trunk
Files:
24 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r53889 r53893  
     12010-01-26  Kent Tamura  <tkent@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        HTMLInputElement::valueAsNumber support except type=datetime-local.
     6        https://bugs.webkit.org/show_bug.cgi?id=32696
     7
     8        input-valueasnumber-datetime-expected.txt and
     9        input-valueasnumber-time-expected.txt have FAIL lines because they
     10        test unimplemented features.
     11
     12        * fast/forms/input-valueasnumber-date-expected.txt: Added.
     13        * fast/forms/input-valueasnumber-date.html: Added.
     14        * fast/forms/input-valueasnumber-datetime-expected.txt: Added.
     15        * fast/forms/input-valueasnumber-datetime.html: Added.
     16        * fast/forms/input-valueasnumber-month-expected.txt: Added.
     17        * fast/forms/input-valueasnumber-month.html: Added.
     18        * fast/forms/input-valueasnumber-number-expected.txt: Added.
     19        * fast/forms/input-valueasnumber-number.html: Added.
     20        * fast/forms/input-valueasnumber-range-expected.txt: Added.
     21        * fast/forms/input-valueasnumber-range.html: Added.
     22        * fast/forms/input-valueasnumber-time-expected.txt: Added.
     23        * fast/forms/input-valueasnumber-time.html: Added.
     24        * fast/forms/input-valueasnumber-unsupported-expected.txt: Added.
     25        * fast/forms/input-valueasnumber-unsupported.html: Added.
     26        * fast/forms/input-valueasnumber-week-expected.txt: Added.
     27        * fast/forms/input-valueasnumber-week.html: Added.
     28        * fast/forms/script-tests/input-valueasnumber-date.js: Added.
     29        * fast/forms/script-tests/input-valueasnumber-datetime.js: Added.
     30        * fast/forms/script-tests/input-valueasnumber-month.js: Added.
     31        * fast/forms/script-tests/input-valueasnumber-number.js: Added.
     32        * fast/forms/script-tests/input-valueasnumber-range.js: Added.
     33        * fast/forms/script-tests/input-valueasnumber-time.js: Added.
     34        * fast/forms/script-tests/input-valueasnumber-unsupported.js: Added.
     35        * fast/forms/script-tests/input-valueasnumber-week.js: Added.
     36
    1372010-01-26  Kent Tamura  <tkent@chromium.org>
    238
  • trunk/WebCore/ChangeLog

    r53892 r53893  
     12010-01-26  Kent Tamura  <tkent@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        HTMLInputElement::valueAsNumber support except type=datetime-local.
     6        https://bugs.webkit.org/show_bug.cgi?id=32696
     7
     8        Tests: fast/forms/input-valueasnumber-date.html
     9               fast/forms/input-valueasnumber-datetime.html
     10               fast/forms/input-valueasnumber-month.html
     11               fast/forms/input-valueasnumber-number.html
     12               fast/forms/input-valueasnumber-range.html
     13               fast/forms/input-valueasnumber-time.html
     14               fast/forms/input-valueasnumber-unsupported.html
     15               fast/forms/input-valueasnumber-week.html
     16
     17        * html/HTMLInputElement.cpp:
     18        (WebCore::HTMLInputElement::valueAsNumber):
     19          According to the specification, we should return NaN for invalid values.
     20        (WebCore::HTMLInputElement::setValueAsNumber):
     21          According to the specification, throws NOT_SUPPORTED_ERR for Infinitiy or NaN,
     22          and throws INVALID_STATE_ERR for unsupported types.
     23        (WebCore::HTMLInputElement::formStringToDouble):
     24          According to the step 14 of Real Number in the specification, we
     25          should round -0 to 0.
     26        * html/HTMLInputElement.h: Declare valueAsNumber() and setValueAsNumber().
     27        * html/HTMLInputElement.idl: Add valueAsNumber.
     28
    1292010-01-26  Dave Hyatt  <hyatt@apple.com>
    230
  • trunk/WebCore/html/HTMLInputElement.cpp

    r53787 r53893  
    14661466    //      If the step value is 1, use SecondFormat::Second.
    14671467    setValue(dateTime.toString());
     1468}
     1469
     1470double HTMLInputElement::valueAsNumber() const
     1471{
     1472    const double nan = numeric_limits<double>::quiet_NaN();
     1473    switch (inputType()) {
     1474    case DATE:
     1475    case DATETIME:
     1476    case MONTH:
     1477    case TIME:
     1478    case WEEK: {
     1479        ISODateTime dateTime;
     1480        if (!formStringToISODateTime(inputType(), value(), &dateTime))
     1481            return nan;
     1482        return dateTime.millisecondsSinceEpoch();
     1483    }
     1484    case NUMBER:
     1485    case RANGE: {
     1486        double numberValue;
     1487        if (!formStringToDouble(value(), &numberValue))
     1488            return nan;
     1489        return numberValue;
     1490    }
     1491
     1492    case BUTTON:
     1493    case CHECKBOX:
     1494    case COLOR:
     1495    case DATETIMELOCAL: // FIXME: Unlike valueAsDate, valueAsNumber should support DATETIMELOCAL type.
     1496    case EMAIL:
     1497    case FILE:
     1498    case HIDDEN:
     1499    case IMAGE:
     1500    case ISINDEX:
     1501    case PASSWORD:
     1502    case RADIO:
     1503    case RESET:
     1504    case SEARCH:
     1505    case SUBMIT:
     1506    case TELEPHONE:
     1507    case TEXT:
     1508    case URL:
     1509        return nan;
     1510    }
     1511    ASSERT_NOT_REACHED();
     1512    return nan;
     1513}
     1514
     1515void HTMLInputElement::setValueAsNumber(double newValue, ExceptionCode& ec)
     1516{
     1517    if (!isfinite(newValue)) {
     1518        ec = NOT_SUPPORTED_ERR;
     1519        return;
     1520    }
     1521    switch (inputType()) {
     1522    case DATE:
     1523    case DATETIME:
     1524    case MONTH:
     1525    case TIME:
     1526    case WEEK:
     1527        setValueAsDate(newValue, ec);
     1528        return;
     1529    case NUMBER:
     1530    case RANGE:
     1531        setValue(formStringFromDouble(newValue));
     1532        return;
     1533
     1534    case DATETIMELOCAL: // FIXME: implement ISODateTime.toString()
     1535    case BUTTON:
     1536    case CHECKBOX:
     1537    case COLOR:
     1538    case EMAIL:
     1539    case FILE:
     1540    case HIDDEN:
     1541    case IMAGE:
     1542    case ISINDEX:
     1543    case PASSWORD:
     1544    case RADIO:
     1545    case RESET:
     1546    case SEARCH:
     1547    case SUBMIT:
     1548    case TELEPHONE:
     1549    case TEXT:
     1550    case URL:
     1551        ec = INVALID_STATE_ERR;
     1552        return;
     1553    }
     1554    ASSERT_NOT_REACHED();
     1555    return;
    14681556}
    14691557
     
    21962284        return false;
    21972285    // NaN and Infinity are not valid numbers according to the standard.
    2198     if (isnan(value) || isinf(value))
     2286    if (!isfinite(value))
    21992287        return false;
     2288    // -0 -> 0
     2289    if (!value)
     2290        value = 0;
    22002291    if (out)
    22012292        *out = value;
  • trunk/WebCore/html/HTMLInputElement.h

    r52434 r53893  
    148148    void setValueAsDate(double, ExceptionCode&);
    149149
     150    double valueAsNumber() const;
     151    void setValueAsNumber(double, ExceptionCode&);
     152
    150153    virtual String placeholder() const;
    151154    virtual void setPlaceholder(const String&);
  • trunk/WebCore/html/HTMLInputElement.idl

    r53890 r53893  
    5959                 attribute [ConvertNullToNullString] DOMString value;
    6060                 attribute Date            valueAsDate setter raises(DOMException);
     61                 attribute double          valueAsNumber setter raises(DOMException);
    6162#if defined(ENABLE_DATALIST) && ENABLE_DATALIST
    6263        readonly attribute HTMLOptionElement selectedOption;
Note: See TracChangeset for help on using the changeset viewer.