Changeset 127882 in webkit


Ignore:
Timestamp:
Sep 7, 2012 10:07:25 AM (12 years ago)
Author:
dmazzoni@google.com
Message:

Source/WebCore: AX: ARIA spin button should support range value attributes
https://bugs.webkit.org/show_bug.cgi?id=96076

Reviewed by Chris Fleizach.

Make an ARIA spin button support ARIA range attributes like
aria-valuenow, aria-valuemin, etc. - just like slider, progressbar,
and scrollbar.

Test: accessibility/spinbutton-value.html

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::isSpinButton):

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::valueDescription):
(WebCore):
(WebCore::AccessibilityRenderObject::isAriaRange):
(WebCore::AccessibilityRenderObject::valueForRange):
(WebCore::AccessibilityRenderObject::maxValueForRange):
(WebCore::AccessibilityRenderObject::minValueForRange):
(WebCore::AccessibilityRenderObject::stringValue):
(WebCore::AccessibilityRenderObject::title):
(WebCore::AccessibilityRenderObject::isGenericFocusableElement):
(WebCore::AccessibilityRenderObject::ariaRoleHasPresentationalChildren):

  • accessibility/AccessibilityRenderObject.h:

(AccessibilityRenderObject):

  • accessibility/mac/WebAccessibilityObjectWrapper.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

Source/WebKit/chromium: AX: ARIA spin button should support range value attributes
https://bugs.webkit.org/show_bug.cgi?id=96076

Reviewed by Chris Fleizach.

Expose supportsRangeValue to simplify Chromium logic for when to
extract a value from a range.

  • public/WebAccessibilityObject.h:

(WebAccessibilityObject):

  • src/WebAccessibilityObject.cpp:

(WebKit::WebAccessibilityObject::supportsRangeValue):
(WebKit):

Tools: New time input needs accessibility
https://bugs.webkit.org/show_bug.cgi?id=96032

Reviewed by Chris Fleizach.

Add support for valueDescription for testing.

  • DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:

(getValueDescription):
(AccessibilityUIElement::AccessibilityUIElement):
(AccessibilityUIElement::valueDescriptionGetterCallback):

  • DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.h:

(AccessibilityUIElement):

LayoutTests: AX: ARIA spin button should support range value attributes
https://bugs.webkit.org/show_bug.cgi?id=96076

Reviewed by Chris Fleizach.

Test that an ARIA spin button exposes ARIA range attributes like
aria-valuenow, aria-valuemin, etc.

  • accessibility/spinbutton-value-expected.txt: Added.
  • accessibility/spinbutton-value.html: Added.
Location:
trunk
Files:
2 added
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r127878 r127882  
     12012-09-07  Dominic Mazzoni  <dmazzoni@google.com>
     2
     3        AX: ARIA spin button should support range value attributes
     4        https://bugs.webkit.org/show_bug.cgi?id=96076
     5
     6        Reviewed by Chris Fleizach.
     7
     8        Test that an ARIA spin button exposes ARIA range attributes like
     9        aria-valuenow, aria-valuemin, etc.
     10
     11        * accessibility/spinbutton-value-expected.txt: Added.
     12        * accessibility/spinbutton-value.html: Added.
     13
    1142012-09-07  Christophe Dumez  <christophe.dumez@intel.com>
    215
  • trunk/Source/WebCore/ChangeLog

    r127880 r127882  
     12012-09-07  Dominic Mazzoni  <dmazzoni@google.com>
     2
     3        AX: ARIA spin button should support range value attributes
     4        https://bugs.webkit.org/show_bug.cgi?id=96076
     5
     6        Reviewed by Chris Fleizach.
     7
     8        Make an ARIA spin button support ARIA range attributes like
     9        aria-valuenow, aria-valuemin, etc. - just like slider, progressbar,
     10        and scrollbar.
     11
     12        Test: accessibility/spinbutton-value.html
     13
     14        * accessibility/AccessibilityObject.h:
     15        (WebCore::AccessibilityObject::isSpinButton):
     16        * accessibility/AccessibilityRenderObject.cpp:
     17        (WebCore::AccessibilityRenderObject::valueDescription):
     18        (WebCore):
     19        (WebCore::AccessibilityRenderObject::isAriaRange):
     20        (WebCore::AccessibilityRenderObject::valueForRange):
     21        (WebCore::AccessibilityRenderObject::maxValueForRange):
     22        (WebCore::AccessibilityRenderObject::minValueForRange):
     23        (WebCore::AccessibilityRenderObject::stringValue):
     24        (WebCore::AccessibilityRenderObject::title):
     25        (WebCore::AccessibilityRenderObject::isGenericFocusableElement):
     26        (WebCore::AccessibilityRenderObject::ariaRoleHasPresentationalChildren):
     27        * accessibility/AccessibilityRenderObject.h:
     28        (AccessibilityRenderObject):
     29        * accessibility/mac/WebAccessibilityObjectWrapper.mm:
     30        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
     31
    1322012-09-07  Sheriff Bot  <webkit.review.bot@gmail.com>
    233
  • trunk/Source/WebCore/accessibility/AccessibilityObject.cpp

    r127370 r127882  
    15571557    return SortDirectionNone;
    15581558}
     1559
     1560bool AccessibilityObject::supportsRangeValue() const
     1561{
     1562    return isProgressIndicator()
     1563        || isSlider()
     1564        || isScrollbar()
     1565        || isSpinButton();
     1566}
    15591567   
    15601568bool AccessibilityObject::supportsARIAExpanded() const
  • trunk/Source/WebCore/accessibility/AccessibilityObject.h

    r127370 r127882  
    367367    virtual bool isMenuListPopup() const { return false; }
    368368    virtual bool isMenuListOption() const { return false; }
    369     virtual bool isSpinButton() const { return false; }
     369    virtual bool isSpinButton() const { return roleValue() == SpinButtonRole; }
    370370    virtual bool isSpinButtonPart() const { return false; }
    371371    virtual bool isMockObject() const { return false; }
     
    462462    AccessibilitySortDirection sortDirection() const;
    463463    virtual bool canvasHasFallbackContent() const { return false; }
     464    bool supportsRangeValue() const;
    464465   
    465466    // ARIA drag and drop
  • trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp

    r127368 r127882  
    11571157String AccessibilityRenderObject::valueDescription() const
    11581158{
    1159     // Only sliders and progress bars support value descriptions currently.
    1160     if (!isProgressIndicator() && !isSlider())
     1159    if (!isARIARange())
    11611160        return String();
    11621161   
     
    11681167    return getAttribute(stepAttr).toFloat();
    11691168}
     1169
     1170bool AccessibilityRenderObject::isARIARange() const
     1171{
     1172    return m_ariaRole == ProgressIndicatorRole
     1173        || m_ariaRole == SliderRole
     1174        || m_ariaRole == ScrollBarRole
     1175        || m_ariaRole == SpinButtonRole;
     1176}
    11701177   
    11711178float AccessibilityRenderObject::valueForRange() const
    11721179{
    1173     if (!isProgressIndicator() && !isSlider() && !isScrollbar())
     1180    if (!isARIARange())
    11741181        return 0.0f;
    11751182
     
    11791186float AccessibilityRenderObject::maxValueForRange() const
    11801187{
    1181     if (!isProgressIndicator() && !isSlider())
     1188    if (!isARIARange())
    11821189        return 0.0f;
    11831190
     
    11871194float AccessibilityRenderObject::minValueForRange() const
    11881195{
    1189     if (!isProgressIndicator() && !isSlider())
     1196    if (!isARIARange())
    11901197        return 0.0f;
    11911198
     
    13991406        break;
    14001407    }
    1401     
     1408   
    14021409    if (isHeading() || isLink())
    14031410        return textUnderElement();
     
    31413148        return false;
    31423149
     3150    // If it has an aria role, it's not generic.
     3151    if (m_ariaRole != UnknownRole)
     3152        return false;
     3153
    31433154    // If the content editable attribute is set on this element, that's the reason
    31443155    // it's focusable, and existing logic should handle this case already - so it's not a
     
    33773388    case ImageRole:
    33783389    case ProgressIndicatorRole:
     3390    case SpinButtonRole:
    33793391    // case SeparatorRole:
    33803392        return true;
  • trunk/Source/WebCore/accessibility/AccessibilityRenderObject.h

    r126970 r127882  
    303303    // This returns true if it's focusable but it's not content editable and it's not a control or ARIA control.
    304304    bool isGenericFocusableElement() const;
     305    bool isARIARange() const;
    305306
    306307    void addTextFieldChildren();
  • trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm

    r127084 r127882  
    20002000                return [[self attachmentView] accessibilityAttributeValue:NSAccessibilityValueAttribute];
    20012001        }
    2002         if (m_object->isProgressIndicator() || m_object->isSlider() || m_object->isScrollbar())
     2002        if (m_object->supportsRangeValue())
    20032003            return [NSNumber numberWithFloat:m_object->valueForRange()];
    20042004        if (m_object->roleValue() == SliderThumbRole)
  • trunk/Source/WebKit/chromium/ChangeLog

    r127876 r127882  
     12012-09-07  Dominic Mazzoni  <dmazzoni@google.com>
     2
     3        AX: ARIA spin button should support range value attributes
     4        https://bugs.webkit.org/show_bug.cgi?id=96076
     5
     6        Reviewed by Chris Fleizach.
     7
     8        Expose supportsRangeValue to simplify Chromium logic for when to
     9        extract a value from a range.
     10
     11        * public/WebAccessibilityObject.h:
     12        (WebAccessibilityObject):
     13        * src/WebAccessibilityObject.cpp:
     14        (WebKit::WebAccessibilityObject::supportsRangeValue):
     15        (WebKit):
     16
    1172012-09-07  Allan Sandfeld Jensen  <allan.jensen@nokia.com>
    218
  • trunk/Source/WebKit/chromium/public/WebAccessibilityObject.h

    r126932 r127882  
    150150    WEBKIT_EXPORT WebURL url() const;
    151151
     152    WEBKIT_EXPORT bool supportsRangeValue() const;
    152153    WEBKIT_EXPORT WebString valueDescription() const;
    153154    WEBKIT_EXPORT float valueForRange() const;
  • trunk/Source/WebKit/chromium/src/WebAccessibilityObject.cpp

    r127540 r127882  
    611611}
    612612
     613bool WebAccessibilityObject::supportsRangeValue() const
     614{
     615    if (isDetached())
     616        return false;
     617
     618    return m_private->supportsRangeValue();
     619}
     620
    613621WebString WebAccessibilityObject::valueDescription() const
    614622{
  • trunk/Tools/ChangeLog

    r127875 r127882  
     12012-09-07  Dominic Mazzoni <dmazzoni@google.com>
     2
     3        New time input needs accessibility
     4        https://bugs.webkit.org/show_bug.cgi?id=96032
     5
     6        Reviewed by Chris Fleizach.
     7
     8        Add support for valueDescription for testing.
     9
     10        * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
     11        (getValueDescription):
     12        (AccessibilityUIElement::AccessibilityUIElement):
     13        (AccessibilityUIElement::valueDescriptionGetterCallback):
     14        * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.h:
     15        (AccessibilityUIElement):
     16
    1172012-09-07  Peter Beverloo  <peter@chromium.org>
    218
  • trunk/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp

    r127084 r127882  
    252252}
    253253
     254string getValueDescription(const WebAccessibilityObject& object)
     255{
     256    string valueDescription = object.valueDescription().utf8();
     257    return valueDescription.insert(0, "AXValueDescription: ");
     258}
     259
    254260string getAttributes(const WebAccessibilityObject& object)
    255261{
     
    304310    bindProperty("minValue", &AccessibilityUIElement::minValueGetterCallback);
    305311    bindProperty("maxValue", &AccessibilityUIElement::maxValueGetterCallback);
     312    bindProperty("valueDescription", &AccessibilityUIElement::valueDescriptionGetterCallback);
    306313    bindProperty("childrenCount", &AccessibilityUIElement::childrenCountGetterCallback);
    307314    bindProperty("insertionPointLineNumber", &AccessibilityUIElement::insertionPointLineNumberGetterCallback);
     
    453460}
    454461
     462void AccessibilityUIElement::valueDescriptionGetterCallback(CppVariant* result)
     463{
     464    result->set(getValueDescription(accessibilityObject()));
     465}
     466
    455467void AccessibilityUIElement::childrenCountGetterCallback(CppVariant* result)
    456468{
  • trunk/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.h

    r124581 r127882  
    7272    void minValueGetterCallback(CppVariant*);
    7373    void maxValueGetterCallback(CppVariant*);
     74    void valueDescriptionGetterCallback(CppVariant*);
    7475    void childrenCountGetterCallback(CppVariant*);
    7576    void insertionPointLineNumberGetterCallback(CppVariant*);
Note: See TracChangeset for help on using the changeset viewer.