Changeset 139172 in webkit


Ignore:
Timestamp:
Jan 9, 2013 12:53:01 AM (11 years ago)
Author:
commit-queue@webkit.org
Message:

INPUT_MULTIPLE_FIELDS_UI: Step-up/-down of week field should respect min/max attributes
https://bugs.webkit.org/show_bug.cgi?id=106416

Patch by Kunihiko Sakamoto <ksakamoto@chromium.org> on 2013-01-09
Reviewed by Kent Tamura.

Source/WebCore:

Make step-up/-down of the week field respect the min/max attributes of the element.
Note that it still accepts any keyboard inputs (the element
becomes 'invalid' state when out-of-range values entered).

Tests: fast/forms/week-multiple-fields/week-multiple-fields-readonly-subfield.html

fast/forms/week-multiple-fields/week-multiple-fields-stepup-stepdown-from-renderer.html

  • css/html.css: Add a CSS rule for week field.
  • html/shadow/DateTimeEditElement.cpp:

(WebCore::DateTimeEditBuilder::visitField):
Compute minimum/maximum values of week field from the min/max parameters of the element.

  • html/shadow/DateTimeFieldElements.cpp:

(WebCore::DateTimeWeekFieldElement::DateTimeWeekFieldElement): Add mininum/maximum arguments.
(WebCore::DateTimeWeekFieldElement::create): Ditto.
(WebCore::DateTimeWeekFieldElement::clampValueForHardLimits): Added.

  • html/shadow/DateTimeFieldElements.h:

(DateTimeWeekFieldElement): Add mininum/maximum arguments and declare clampValueForHardLimits.

LayoutTests:

  • fast/forms/week-multiple-fields/week-multiple-fields-readonly-subfield-expected.txt: Added.
  • fast/forms/week-multiple-fields/week-multiple-fields-readonly-subfield.html: Added.
  • fast/forms/week-multiple-fields/week-multiple-fields-stepup-stepdown-from-renderer-expected.txt: Added.
  • fast/forms/week-multiple-fields/week-multiple-fields-stepup-stepdown-from-renderer.html: Added.
Location:
trunk
Files:
4 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r139171 r139172  
     12013-01-09  Kunihiko Sakamoto  <ksakamoto@chromium.org>
     2
     3        INPUT_MULTIPLE_FIELDS_UI: Step-up/-down of week field should respect min/max attributes
     4        https://bugs.webkit.org/show_bug.cgi?id=106416
     5
     6        Reviewed by Kent Tamura.
     7
     8        * fast/forms/week-multiple-fields/week-multiple-fields-readonly-subfield-expected.txt: Added.
     9        * fast/forms/week-multiple-fields/week-multiple-fields-readonly-subfield.html: Added.
     10        * fast/forms/week-multiple-fields/week-multiple-fields-stepup-stepdown-from-renderer-expected.txt: Added.
     11        * fast/forms/week-multiple-fields/week-multiple-fields-stepup-stepdown-from-renderer.html: Added.
     12
    1132013-01-09  Noel Gordon  <noel.gordon@gmail.com>
    214
  • trunk/Source/WebCore/ChangeLog

    r139166 r139172  
     12013-01-09  Kunihiko Sakamoto  <ksakamoto@chromium.org>
     2
     3        INPUT_MULTIPLE_FIELDS_UI: Step-up/-down of week field should respect min/max attributes
     4        https://bugs.webkit.org/show_bug.cgi?id=106416
     5
     6        Reviewed by Kent Tamura.
     7
     8        Make step-up/-down of the week field respect the min/max attributes of the element.
     9        Note that it still accepts any keyboard inputs (the element
     10        becomes 'invalid' state when out-of-range values entered).
     11
     12        Tests: fast/forms/week-multiple-fields/week-multiple-fields-readonly-subfield.html
     13               fast/forms/week-multiple-fields/week-multiple-fields-stepup-stepdown-from-renderer.html
     14
     15        * css/html.css: Add a CSS rule for week field.
     16        * html/shadow/DateTimeEditElement.cpp:
     17        (WebCore::DateTimeEditBuilder::visitField):
     18        Compute minimum/maximum values of week field from the min/max parameters of the element.
     19        * html/shadow/DateTimeFieldElements.cpp:
     20        (WebCore::DateTimeWeekFieldElement::DateTimeWeekFieldElement): Add mininum/maximum arguments.
     21        (WebCore::DateTimeWeekFieldElement::create): Ditto.
     22        (WebCore::DateTimeWeekFieldElement::clampValueForHardLimits): Added.
     23        * html/shadow/DateTimeFieldElements.h:
     24        (DateTimeWeekFieldElement): Add mininum/maximum arguments and declare clampValueForHardLimits.
     25
    1262013-01-08  Arpita Bahuguna  <arpitabahuguna@gmail.com>
    227
  • trunk/Source/WebCore/css/html.css

    r139036 r139172  
    582582input::-webkit-datetime-edit-year-field[readonly],
    583583input::-webkit-datetime-edit-month-field[readonly],
     584input::-webkit-datetime-edit-week-field[readonly],
    584585input::-webkit-datetime-edit-day-field[readonly],
    585586input::-webkit-datetime-edit-ampm-field[readonly],
  • trunk/Source/WebCore/html/shadow/DateTimeEditElement.cpp

    r139036 r139172  
    248248    }
    249249
    250     case DateTimeFormat::FieldTypeWeekOfYear:
    251         m_editElement.addField(DateTimeWeekFieldElement::create(document, m_editElement));
    252         return;
     250    case DateTimeFormat::FieldTypeWeekOfYear: {
     251        int minWeek = DateComponents::minimumWeekNumber;
     252        int maxWeek = DateComponents::maximumWeekNumber;
     253        if (m_parameters.minimum.type() != DateComponents::Invalid
     254            && m_parameters.maximum.type() != DateComponents::Invalid
     255            && m_parameters.minimum.fullYear() == m_parameters.maximum.fullYear()
     256            && m_parameters.minimum.week() <= m_parameters.maximum.week()) {
     257            minWeek = m_parameters.minimum.week();
     258            maxWeek = m_parameters.maximum.week();
     259        }
     260        m_editElement.addField(DateTimeWeekFieldElement::create(document, m_editElement, minWeek, maxWeek));
     261        return;
     262    }
    253263
    254264    case DateTimeFormat::FieldTypeYear: {
  • trunk/Source/WebCore/html/shadow/DateTimeFieldElements.cpp

    r139036 r139172  
    436436// ----------------------------
    437437
    438 DateTimeWeekFieldElement::DateTimeWeekFieldElement(Document* document, FieldOwner& fieldOwner)
    439     : DateTimeNumericFieldElement(document, fieldOwner, DateComponents::minimumWeekNumber, DateComponents::maximumWeekNumber, "--")
    440 {
    441 }
    442 
    443 PassRefPtr<DateTimeWeekFieldElement> DateTimeWeekFieldElement::create(Document* document, FieldOwner& fieldOwner)
     438DateTimeWeekFieldElement::DateTimeWeekFieldElement(Document* document, FieldOwner& fieldOwner, int minimum, int maximum)
     439    : DateTimeNumericFieldElement(document, fieldOwner, minimum, maximum, "--")
     440{
     441}
     442
     443PassRefPtr<DateTimeWeekFieldElement> DateTimeWeekFieldElement::create(Document* document, FieldOwner& fieldOwner, int minimum, int maximum)
    444444{
    445445    DEFINE_STATIC_LOCAL(AtomicString, weekPsuedoId, ("-webkit-datetime-edit-week-field", AtomicString::ConstructFromLiteral));
    446     RefPtr<DateTimeWeekFieldElement> field = adoptRef(new DateTimeWeekFieldElement(document, fieldOwner));
     446    RefPtr<DateTimeWeekFieldElement> field = adoptRef(new DateTimeWeekFieldElement(document, fieldOwner, minimum, maximum));
    447447    field->initialize(weekPsuedoId, AXWeekOfYearFieldText());
    448448    return field.release();
     
    473473
    474474    setEmptyValue();
     475}
     476
     477int DateTimeWeekFieldElement::clampValueForHardLimits(int value) const
     478{
     479    return Range(DateComponents::minimumWeekNumber, DateComponents::maximumWeekNumber).clampValue(value);
    475480}
    476481
  • trunk/Source/WebCore/html/shadow/DateTimeFieldElements.h

    r139036 r139172  
    173173
    174174public:
    175     static PassRefPtr<DateTimeWeekFieldElement> create(Document*, FieldOwner&);
    176 
    177 private:
    178     DateTimeWeekFieldElement(Document*, FieldOwner&);
    179 
    180     // DateTimeFieldElement functions.
    181     virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
    182     virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
    183     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
     175    static PassRefPtr<DateTimeWeekFieldElement> create(Document*, FieldOwner&, int minimum, int maximum);
     176
     177private:
     178    DateTimeWeekFieldElement(Document*, FieldOwner&, int minimum, int maximum);
     179
     180    // DateTimeFieldElement functions.
     181    virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
     182    virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
     183    virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
     184
     185    // DateTimeNumericFieldElement function.
     186    virtual int clampValueForHardLimits(int) const OVERRIDE FINAL;
    184187};
    185188
Note: See TracChangeset for help on using the changeset viewer.