Changeset 51195 in webkit


Ignore:
Timestamp:
Nov 19, 2009 11:28:24 AM (14 years ago)
Author:
eric@webkit.org
Message:

2009-11-19 Chris Fleizach <Chris Fleizach>

Reviewed by Darin Adler.

WAI-ARIA roles not supported on image map <area>
https://bugs.webkit.org/show_bug.cgi?id=31525

  • accessibility/aria-used-on-image-maps-expected.txt: Added.
  • accessibility/aria-used-on-image-maps.html: Added.
  • platform/gtk/Skipped:
  • platform/win/Skipped:
Location:
trunk
Files:
2 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r51191 r51195  
     12009-11-19  Chris Fleizach  <cfleizach@apple.com>
     2
     3        Reviewed by Darin Adler.
     4
     5        WAI-ARIA roles not supported on image map <area>
     6        https://bugs.webkit.org/show_bug.cgi?id=31525
     7
     8        * accessibility/aria-used-on-image-maps-expected.txt: Added.
     9        * accessibility/aria-used-on-image-maps.html: Added.
     10        * platform/gtk/Skipped:
     11        * platform/win/Skipped:
     12
    1132009-11-19  Eric Carlson  <eric.carlson@apple.com>
    214
  • trunk/LayoutTests/platform/gtk/Skipped

    r51191 r51195  
    5555accessibility/aria-readonly.html
    5656accessibility/aria-tab-roles.html
     57accessibility/aria-used-on-image-maps.html
    5758accessibility/button-press-action.html
    5859accessibility/canvas.html
  • trunk/LayoutTests/platform/win/Skipped

    r51191 r51195  
    375375accessibility/aria-tables.html
    376376accessibility/aria-tab-roles.html
     377accessibility/aria-used-on-image-maps.html
    377378accessibility/button-press-action.html
    378379accessibility/canvas.html
  • trunk/WebCore/accessibility/AccessibilityImageMapLink.cpp

    r50444 r51195  
    6767   
    6868    return m_mapElement->document()->axObjectCache()->getOrCreate(m_mapElement->renderer());
     69}
     70   
     71AccessibilityRole AccessibilityImageMapLink::roleValue() const
     72{
     73    if (!m_areaElement)
     74        return WebCoreLinkRole;
     75   
     76    const AtomicString& ariaRole = m_areaElement->getAttribute(roleAttr);
     77    if (!ariaRole.isEmpty())
     78        return AccessibilityObject::ariaRoleToWebCoreRole(ariaRole);
     79
     80    return WebCoreLinkRole;
    6981}
    7082   
  • trunk/WebCore/accessibility/AccessibilityImageMapLink.h

    r50353 r51195  
    4848    void setParent(AccessibilityObject* parent) { m_parent = parent; }
    4949       
    50     virtual AccessibilityRole roleValue() const { return WebCoreLinkRole; }
     50    virtual AccessibilityRole roleValue() const;
    5151    virtual bool accessibilityIsIgnored() const { return false; }
    5252    virtual bool isEnabled() const { return true; }
  • trunk/WebCore/accessibility/AccessibilityObject.cpp

    r50865 r51195  
    841841    // A tie goes to horizontal.
    842842    return AccessibilityOrientationHorizontal;
     843}   
     844
     845typedef HashMap<String, AccessibilityRole, CaseFoldingHash> ARIARoleMap;
     846
     847struct RoleEntry {
     848    String ariaRole;
     849    AccessibilityRole webcoreRole;
     850};
     851
     852static ARIARoleMap* createARIARoleMap()
     853{
     854    const RoleEntry roles[] = {
     855        { "alert", ApplicationAlertRole },
     856        { "alertdialog", ApplicationAlertDialogRole },
     857        { "application", LandmarkApplicationRole },
     858        { "article", DocumentArticleRole },
     859        { "banner", LandmarkBannerRole },
     860        { "button", ButtonRole },
     861        { "checkbox", CheckBoxRole },
     862        { "complementary", LandmarkComplementaryRole },
     863        { "contentinfo", LandmarkContentInfoRole },
     864        { "dialog", ApplicationDialogRole },
     865        { "directory", DirectoryRole },
     866        { "grid", TableRole },
     867        { "gridcell", CellRole },
     868        { "columnheader", ColumnHeaderRole },
     869        { "combobox", ComboBoxRole },
     870        { "definition", DefinitionListDefinitionRole },
     871        { "document", DocumentRole },
     872        { "rowheader", RowHeaderRole },
     873        { "group", GroupRole },
     874        { "heading", HeadingRole },
     875        { "img", ImageRole },
     876        { "link", WebCoreLinkRole },
     877        { "list", ListRole },       
     878        { "listitem", GroupRole },       
     879        { "listbox", ListBoxRole },
     880        { "log", ApplicationLogRole },
     881        // "option" isn't here because it may map to different roles depending on the parent element's role
     882        { "main", LandmarkMainRole },
     883        { "marquee", ApplicationMarqueeRole },
     884        { "menu", MenuRole },
     885        { "menubar", GroupRole },
     886        // "menuitem" isn't here because it may map to different roles depending on the parent element's role
     887        { "menuitemcheckbox", MenuItemRole },
     888        { "menuitemradio", MenuItemRole },
     889        { "note", DocumentNoteRole },
     890        { "navigation", LandmarkNavigationRole },
     891        { "option", ListBoxOptionRole },
     892        { "presentation", IgnoredRole },
     893        { "progressbar", ProgressIndicatorRole },
     894        { "radio", RadioButtonRole },
     895        { "radiogroup", RadioGroupRole },
     896        { "region", DocumentRegionRole },
     897        { "row", RowRole },
     898        { "range", SliderRole },
     899        { "search", LandmarkSearchRole },
     900        { "separator", SplitterRole },
     901        { "slider", SliderRole },
     902        { "spinbutton", ProgressIndicatorRole },
     903        { "status", ApplicationStatusRole },
     904        { "tab", TabRole },
     905        { "tablist", TabListRole },
     906        { "tabpanel", TabPanelRole },
     907        { "textbox", TextAreaRole },
     908        { "timer", ApplicationTimerRole },
     909        { "toolbar", ToolbarRole },
     910        { "tooltip", UserInterfaceTooltipRole },
     911        { "tree", TreeRole },
     912        { "treeitem", TreeItemRole }
     913    };
     914    ARIARoleMap* roleMap = new ARIARoleMap;
     915   
     916    const unsigned numRoles = sizeof(roles) / sizeof(roles[0]);
     917    for (unsigned i = 0; i < numRoles; ++i)
     918        roleMap->set(roles[i].ariaRole, roles[i].webcoreRole);
     919    return roleMap;
     920}
     921
     922AccessibilityRole AccessibilityObject::ariaRoleToWebCoreRole(const String& value)
     923{
     924    ASSERT(!value.isEmpty());
     925    static const ARIARoleMap* roleMap = createARIARoleMap();
     926    return roleMap->get(value);
    843927}
    844928   
  • trunk/WebCore/accessibility/AccessibilityObject.h

    r51007 r51195  
    418418    virtual void handleActiveDescendantChanged() { }
    419419
     420    static AccessibilityRole ariaRoleToWebCoreRole(const String&);
     421   
    420422    virtual VisiblePositionRange visiblePositionRange() const { return VisiblePositionRange(); }
    421423    virtual VisiblePositionRange visiblePositionRangeForLine(unsigned) const { return VisiblePositionRange(); }
  • trunk/WebCore/accessibility/AccessibilityRenderObject.cpp

    r51055 r51195  
    24362436    return 0;
    24372437}
    2438    
    2439 typedef HashMap<String, AccessibilityRole, CaseFoldingHash> ARIARoleMap;
    2440 
    2441 struct RoleEntry {
    2442     String ariaRole;
    2443     AccessibilityRole webcoreRole;
    2444 };
    2445 
    2446 static const ARIARoleMap& createARIARoleMap()
    2447 {
    2448     const RoleEntry roles[] = {
    2449         { "alert", ApplicationAlertRole },
    2450         { "alertdialog", ApplicationAlertDialogRole },
    2451         { "application", LandmarkApplicationRole },
    2452         { "article", DocumentArticleRole },
    2453         { "banner", LandmarkBannerRole },
    2454         { "button", ButtonRole },
    2455         { "checkbox", CheckBoxRole },
    2456         { "complementary", LandmarkComplementaryRole },
    2457         { "contentinfo", LandmarkContentInfoRole },
    2458         { "dialog", ApplicationDialogRole },
    2459         { "directory", DirectoryRole },
    2460         { "grid", TableRole },
    2461         { "gridcell", CellRole },
    2462         { "columnheader", ColumnHeaderRole },
    2463         { "combobox", ComboBoxRole },
    2464         { "definition", DefinitionListDefinitionRole },
    2465         { "document", DocumentRole },
    2466         { "rowheader", RowHeaderRole },
    2467         { "group", GroupRole },
    2468         { "heading", HeadingRole },
    2469         { "img", ImageRole },
    2470         { "link", WebCoreLinkRole },
    2471         { "list", ListRole },       
    2472         { "listitem", GroupRole },       
    2473         { "listbox", ListBoxRole },
    2474         { "log", ApplicationLogRole },
    2475         // "option" isn't here because it may map to different roles depending on the parent element's role
    2476         { "main", LandmarkMainRole },
    2477         { "marquee", ApplicationMarqueeRole },
    2478         { "menu", MenuRole },
    2479         { "menubar", GroupRole },
    2480         // "menuitem" isn't here because it may map to different roles depending on the parent element's role
    2481         { "menuitemcheckbox", MenuItemRole },
    2482         { "menuitemradio", MenuItemRole },
    2483         { "note", DocumentNoteRole },
    2484         { "navigation", LandmarkNavigationRole },
    2485         { "option", ListBoxOptionRole },
    2486         { "presentation", IgnoredRole },
    2487         { "progressbar", ProgressIndicatorRole },
    2488         { "radio", RadioButtonRole },
    2489         { "radiogroup", RadioGroupRole },
    2490         { "region", DocumentRegionRole },
    2491         { "row", RowRole },
    2492         { "range", SliderRole },
    2493         { "search", LandmarkSearchRole },
    2494         { "separator", SplitterRole },
    2495         { "slider", SliderRole },
    2496         { "spinbutton", ProgressIndicatorRole },
    2497         { "status", ApplicationStatusRole },
    2498         { "tab", TabRole },
    2499         { "tablist", TabListRole },
    2500         { "tabpanel", TabPanelRole },
    2501         { "textbox", TextAreaRole },
    2502         { "timer", ApplicationTimerRole },
    2503         { "toolbar", ToolbarRole },
    2504         { "tooltip", UserInterfaceTooltipRole },
    2505         { "tree", TreeRole },
    2506         { "treeitem", TreeItemRole }
    2507     };
    2508     ARIARoleMap& roleMap = *new ARIARoleMap;
    2509        
    2510     const unsigned numRoles = sizeof(roles) / sizeof(roles[0]);
    2511     for (unsigned i = 0; i < numRoles; ++i)
    2512         roleMap.set(roles[i].ariaRole, roles[i].webcoreRole);
    2513     return roleMap;
    2514 }
    2515 
    2516 static AccessibilityRole ariaRoleToWebCoreRole(String value)
    2517 {
    2518     ASSERT(!value.isEmpty() && !value.isNull());
    2519     static const ARIARoleMap& roleMap = createARIARoleMap();
    2520     return roleMap.get(value);
    2521 }
    25222438
    25232439AccessibilityRole AccessibilityRenderObject::determineAriaRoleAttribute() const
Note: See TracChangeset for help on using the changeset viewer.