Changeset 155492 in webkit


Ignore:
Timestamp:
Sep 10, 2013 4:49:53 PM (11 years ago)
Author:
Chris Fleizach
Message:

AX: AXValue/AXMenuItemMarkChar not defined for menuitemradio (should be false (0) with aria-checked=mixed | undefined)
https://bugs.webkit.org/show_bug.cgi?id=120372

Reviewed by Mario Sanchez Prada.

Source/WebCore:

Add new roles to make the distinction between menu item, menu item radio and menu item checkbox.
Expose AXValue for menu items, so that they can convey the, on/off/mixed state of aria-checked.

Test: platform/mac/accessibility/menu-item-values.html

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::isMenuRelated):
(WebCore::AccessibilityNodeObject::isMenuItem):
(WebCore::AccessibilityNodeObject::isChecked):
(WebCore::AccessibilityNodeObject::actionElement):
(WebCore::AccessibilityNodeObject::visibleText):
(WebCore::AccessibilityNodeObject::title):

  • accessibility/AccessibilityObject.cpp:

(WebCore::createARIARoleMap):
(WebCore::AccessibilityObject::checkboxOrRadioValue):

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityCanFuzzyHitTest]):
(-[WebAccessibilityObjectWrapper accessibilityTraits]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):
(createAccessibilityRoleMap):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

LayoutTests:

  • platform/mac/accessibility/menu-item-values-expected.txt: Added.
  • platform/mac/accessibility/menu-item-values.html: Added.
Location:
trunk
Files:
2 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r155475 r155492  
     12013-09-10  Chris Fleizach  <cfleizach@apple.com>
     2
     3        AX: AXValue/AXMenuItemMarkChar not defined for menuitemradio (should be false (0) with aria-checked=mixed | undefined)
     4        https://bugs.webkit.org/show_bug.cgi?id=120372
     5
     6        Reviewed by Mario Sanchez Prada.
     7
     8        * platform/mac/accessibility/menu-item-values-expected.txt: Added.
     9        * platform/mac/accessibility/menu-item-values.html: Added.
     10
    1112013-09-10  Marcelo Morais  <m.morais@samsung.com>
    212
  • trunk/Source/WebCore/ChangeLog

    r155491 r155492  
     12013-09-10  Chris Fleizach  <cfleizach@apple.com>
     2
     3        AX: AXValue/AXMenuItemMarkChar not defined for menuitemradio (should be false (0) with aria-checked=mixed | undefined)
     4        https://bugs.webkit.org/show_bug.cgi?id=120372
     5
     6        Reviewed by Mario Sanchez Prada.
     7
     8        Add new roles to make the distinction between menu item, menu item radio and menu item checkbox.
     9        Expose AXValue for menu items, so that they can convey the, on/off/mixed state of aria-checked.
     10
     11        Test: platform/mac/accessibility/menu-item-values.html
     12
     13        * accessibility/AccessibilityNodeObject.cpp:
     14        (WebCore::AccessibilityNodeObject::isMenuRelated):
     15        (WebCore::AccessibilityNodeObject::isMenuItem):
     16        (WebCore::AccessibilityNodeObject::isChecked):
     17        (WebCore::AccessibilityNodeObject::actionElement):
     18        (WebCore::AccessibilityNodeObject::visibleText):
     19        (WebCore::AccessibilityNodeObject::title):
     20        * accessibility/AccessibilityObject.cpp:
     21        (WebCore::createARIARoleMap):
     22        (WebCore::AccessibilityObject::checkboxOrRadioValue):
     23        * accessibility/AccessibilityObject.h:
     24        * accessibility/AccessibilityRenderObject.cpp:
     25        (WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored):
     26        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
     27        (-[WebAccessibilityObjectWrapper accessibilityCanFuzzyHitTest]):
     28        (-[WebAccessibilityObjectWrapper accessibilityTraits]):
     29        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
     30        (-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):
     31        (createAccessibilityRoleMap):
     32        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
     33
    1342013-09-10  Anders Carlsson  <andersca@apple.com>
    235
     
    2255        * Target.pri:
    2356
     57>>>>>>> .r155491
    24582013-09-10  Sergio Correia  <sergio.correia@openbossa.org>
    2559
  • trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp

    r155428 r155492  
    555555    case MenuButtonRole:
    556556    case MenuItemRole:
     557    case MenuItemCheckboxRole:
     558    case MenuItemRadioRole:
    557559        return true;
    558560    default:
     
    578580bool AccessibilityNodeObject::isMenuItem() const
    579581{
    580     return roleValue() == MenuItemRole;
     582    switch (roleValue()) {
     583    case MenuItemRole:
     584    case MenuItemRadioRole:
     585    case MenuItemCheckboxRole:
     586        return true;
     587    default:
     588        return false;
     589    }
    581590}
    582591
     
    657666    case CheckBoxRole:
    658667    case MenuItemRole:
     668    case MenuItemCheckboxRole:
     669    case MenuItemRadioRole:
    659670        validRole = true;
    660671        break;
     
    960971    case TabRole:
    961972    case MenuItemRole:
     973    case MenuItemCheckboxRole:
     974    case MenuItemRadioRole:
    962975    case ListItemRole:
    963976        return toElement(node);
     
    12571270    case MenuButtonRole:
    12581271    case MenuItemRole:
     1272    case MenuItemCheckboxRole:
     1273    case MenuItemRadioRole:
    12591274    case RadioButtonRole:
    12601275    case TabRole:
     
    16211636    case MenuButtonRole:
    16221637    case MenuItemRole:
     1638    case MenuItemCheckboxRole:
     1639    case MenuItemRadioRole:
    16231640    case RadioButtonRole:
    16241641    case TabRole:
  • trunk/Source/WebCore/accessibility/AccessibilityObject.cpp

    r155458 r155492  
    14561456        { "menubar", MenuBarRole },
    14571457        { "menuitem", MenuItemRole },
    1458         { "menuitemcheckbox", MenuItemRole },
    1459         { "menuitemradio", MenuItemRole },
     1458        { "menuitemcheckbox", MenuItemCheckboxRole },
     1459        { "menuitemradio", MenuItemRadioRole },
    14601460        { "note", DocumentNoteRole },
    14611461        { "navigation", LandmarkNavigationRole },
     
    16941694    if (equalIgnoringCase(result, "true"))
    16951695        return ButtonStateOn;
    1696     if (equalIgnoringCase(result, "mixed"))
     1696    if (equalIgnoringCase(result, "mixed")) {
     1697        // ARIA says that radio and menuitemradio elements must NOT expose button state mixed.
     1698        AccessibilityRole ariaRole = ariaRoleAttribute();
     1699        if (ariaRole == RadioButtonRole || ariaRole == MenuItemRadioRole)
     1700            return ButtonStateOff;
    16971701        return ButtonStateMixed;
     1702    }
    16981703   
    16991704    return ButtonStateOff;
  • trunk/Source/WebCore/accessibility/AccessibilityObject.h

    r155458 r155492  
    159159    MenuButtonRole,
    160160    MenuItemRole,
     161    MenuItemCheckboxRole,
     162    MenuItemRadioRole,
    161163    MenuListPopupRole,
    162164    MenuListOptionRole,
  • trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp

    r155428 r155492  
    11691169        // static text beneath MenuItems and MenuButtons are just reported along with the menu item, so it's ignored on an individual level
    11701170        AccessibilityObject* parent = parentObjectUnignored();
    1171         if (parent && (parent->ariaRoleAttribute() == MenuItemRole || parent->ariaRoleAttribute() == MenuButtonRole))
     1171        if (parent && (parent->isMenuItem() || parent->ariaRoleAttribute() == MenuButtonRole))
    11721172            return true;
    11731173        RenderText* renderText = toRenderText(m_renderer);
  • trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm

    r154877 r155492  
    277277    case MenuButtonRole:
    278278    case MenuItemRole:
     279    case MenuItemCheckboxRole:
     280    case MenuItemRadioRole:
    279281    case PopUpButtonRole:
    280282    case RadioButtonRole:
     
    549551        case MenuButtonRole:
    550552        case MenuItemRole:
     553        case MenuItemCheckboxRole:
     554        case MenuItemRadioRole:
    551555            traits |= [self _axMenuItemTrait];
    552556            break;
  • trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm

    r155458 r155492  
    12151215        [tempArray addObject:NSAccessibilityHelpAttribute];
    12161216        [tempArray addObject:NSAccessibilitySelectedAttribute];
     1217        [tempArray addObject:NSAccessibilityValueAttribute];
    12171218        [tempArray addObject:(NSString*)kAXMenuItemCmdCharAttribute];
    12181219        [tempArray addObject:(NSString*)kAXMenuItemCmdVirtualKeyAttribute];
     
    16441645        { MenuRole, NSAccessibilityMenuRole },
    16451646        { MenuItemRole, NSAccessibilityMenuItemRole },
     1647        { MenuItemCheckboxRole, NSAccessibilityMenuItemRole },
     1648        { MenuItemRadioRole, NSAccessibilityMenuItemRole },
    16461649        { ColumnRole, NSAccessibilityColumnRole },
    16471650        { RowRole, NSAccessibilityRowRole },
     
    22842287            return [NSNumber numberWithInt:m_object->headingLevel()];
    22852288       
    2286         if (m_object->isCheckboxOrRadio()) {
     2289        if (m_object->isCheckboxOrRadio() || m_object->isMenuItem()) {
    22872290            switch (m_object->checkboxOrRadioValue()) {
    22882291                case ButtonStateOff:
Note: See TracChangeset for help on using the changeset viewer.