Changeset 141889 in webkit


Ignore:
Timestamp:
Feb 5, 2013 5:54:16 AM (11 years ago)
Author:
tkent@chromium.org
Message:

INPUT_MULTIPLE_FIELDS_UI: element.focus() should not focus on disabled sub-fields.
https://bugs.webkit.org/show_bug.cgi?id=108924

Reviewed by Kentaro Hara.

Source/WebCore:

The first field may be non-focusable. We should search sub-fields for
focusable one.

Test: fast/forms/date-multiple-fields/date-multiple-fields-focus.html

  • html/shadow/DateTimeEditElement.cpp:

(WebCore::DateTimeEditElement::focusOnNextFocusableField):
Added. A private helper function.
(WebCore::DateTimeEditElement::focusIfNoFocus): Use focusOnNextFocusableField.
(WebCore::DateTimeEditElement::focusByOwner): Ditto.
(WebCore::DateTimeEditElement::focusOnNextField): Ditto.

  • html/shadow/DateTimeEditElement.h:

(DateTimeEditElement): Declare focusOnNextFocusableField.

LayoutTests:

  • fast/forms/date-multiple-fields/date-multiple-fields-focus-expected.txt: Added.
  • fast/forms/date-multiple-fields/date-multiple-fields-focus.html: Added.
Location:
trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r141888 r141889  
     12013-02-05  Kent Tamura  <tkent@chromium.org>
     2
     3        INPUT_MULTIPLE_FIELDS_UI: element.focus() should not focus on disabled sub-fields.
     4        https://bugs.webkit.org/show_bug.cgi?id=108924
     5
     6        Reviewed by Kentaro Hara.
     7
     8        * fast/forms/date-multiple-fields/date-multiple-fields-focus-expected.txt: Added.
     9        * fast/forms/date-multiple-fields/date-multiple-fields-focus.html: Added.
     10
    1112013-02-04  Vsevolod Vlasov  <vsevik@chromium.org>
    212
  • trunk/Source/WebCore/ChangeLog

    r141888 r141889  
     12013-02-05  Kent Tamura  <tkent@chromium.org>
     2
     3        INPUT_MULTIPLE_FIELDS_UI: element.focus() should not focus on disabled sub-fields.
     4        https://bugs.webkit.org/show_bug.cgi?id=108924
     5
     6        Reviewed by Kentaro Hara.
     7
     8        The first field may be non-focusable. We should search sub-fields for
     9        focusable one.
     10
     11        Test: fast/forms/date-multiple-fields/date-multiple-fields-focus.html
     12
     13        * html/shadow/DateTimeEditElement.cpp:
     14        (WebCore::DateTimeEditElement::focusOnNextFocusableField):
     15        Added. A private helper function.
     16        (WebCore::DateTimeEditElement::focusIfNoFocus): Use focusOnNextFocusableField.
     17        (WebCore::DateTimeEditElement::focusByOwner): Ditto.
     18        (WebCore::DateTimeEditElement::focusOnNextField): Ditto.
     19        * html/shadow/DateTimeEditElement.h:
     20        (DateTimeEditElement): Declare focusOnNextFocusableField.
     21
    1222013-02-04  Vsevolod Vlasov  <vsevik@chromium.org>
    223
  • trunk/Source/WebCore/html/shadow/DateTimeEditElement.cpp

    r141866 r141889  
    507507    if (focusedFieldIndex() != invalidFieldIndex)
    508508        return;
    509 
    510     if (DateTimeFieldElement* field = fieldAt(0))
    511         field->focus();
     509    focusOnNextFocusableField(0);
    512510}
    513511
    514512void DateTimeEditElement::focusByOwner()
    515513{
    516     if (DateTimeFieldElement* field = fieldAt(0))
    517         field->focus();
     514    focusOnNextFocusableField(0);
    518515}
    519516
     
    539536}
    540537
     538bool DateTimeEditElement::focusOnNextFocusableField(size_t startIndex)
     539{
     540    for (size_t fieldIndex = startIndex; fieldIndex < m_fields.size(); ++fieldIndex) {
     541        if (m_fields[fieldIndex]->isFocusable()) {
     542            m_fields[fieldIndex]->focus();
     543            return true;
     544        }
     545    }
     546    return false;
     547}
     548
    541549bool DateTimeEditElement::focusOnNextField(const DateTimeFieldElement& field)
    542550{
     
    544552    if (startFieldIndex == invalidFieldIndex)
    545553        return false;
    546     for (size_t fieldIndex = startFieldIndex + 1; fieldIndex < m_fields.size(); ++fieldIndex) {
    547         if (m_fields[fieldIndex]->isFocusable()) {
    548             m_fields[fieldIndex]->focus();
    549             return true;
    550         }
    551     }
    552     return false;
     554    return focusOnNextFocusableField(startFieldIndex + 1);
    553555}
    554556
  • trunk/Source/WebCore/html/shadow/DateTimeEditElement.h

    r141195 r141889  
    124124    DateTimeFieldElement* focusedField() const;
    125125    size_t focusedFieldIndex() const;
     126    bool focusOnNextFocusableField(size_t startIndex);
    126127    bool isDisabled() const;
    127128    bool isReadOnly() const;
Note: See TracChangeset for help on using the changeset viewer.