[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373
eric at webkit.org
eric at webkit.org
Wed Apr 7 23:49:43 UTC 2010
The following commit has been merged in the webkit-1.2 branch:
commit 5514324711d0a8d920e358d5fbd00441d130a6ce
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Thu Nov 19 19:28:24 2009 +0000
2009-11-19 Chris Fleizach <cfleizach at apple.com>
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:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@51195 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 7d901ab..fe658ff 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,15 @@
+2009-11-19 Chris Fleizach <cfleizach at apple.com>
+
+ 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:
+
2009-11-19 Eric Carlson <eric.carlson at apple.com>
Reviewed by Dan Bernstein.
diff --git a/LayoutTests/accessibility/aria-used-on-image-maps-expected.txt b/LayoutTests/accessibility/aria-used-on-image-maps-expected.txt
new file mode 100644
index 0000000..ae1b33e
--- /dev/null
+++ b/LayoutTests/accessibility/aria-used-on-image-maps-expected.txt
@@ -0,0 +1,12 @@
+
+This tests that you can set an ARIA role on image map elements.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS group.childAtIndex(0).role is 'AXRole: AXButton'
+PASS group.childAtIndex(1).role is 'AXRole: AXButton'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/accessibility/aria-used-on-image-maps.html b/LayoutTests/accessibility/aria-used-on-image-maps.html
new file mode 100644
index 0000000..f336e1b
--- /dev/null
+++ b/LayoutTests/accessibility/aria-used-on-image-maps.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../fast/js/resources/js-test-style.css">
+<script>
+var successfullyParsed = false;
+</script>
+<script src="../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body id="body">
+
+<img id="image" usemap="#map" src="data:image/gif;base64,R0lGODlhAQABAIAAAOTm7AAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" width="100" height="50" alt="">
+<map name="map" id="map">
+ <area tabindex="0" role="button" shape="rect" coords="0,0,50,50" href="#" title="Example 1">
+ <area tabindex="0" role="button" shape="rect" coords="50,0,100,50" href="#" title="Example 2">
+</map>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+
+ description("This tests that you can set an ARIA role on image map elements.");
+
+ if (window.accessibilityController) {
+
+ var group = accessibilityController.rootElement.childAtIndex(0).childAtIndex(0);
+ shouldBe("group.childAtIndex(0).role", "'AXRole: AXButton'");
+ shouldBe("group.childAtIndex(1).role", "'AXRole: AXButton'");
+ }
+
+ successfullyParsed = true;
+</script>
+
+<script src="../fast/js/resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/platform/gtk/Skipped b/LayoutTests/platform/gtk/Skipped
index ca250d5..a637642 100644
--- a/LayoutTests/platform/gtk/Skipped
+++ b/LayoutTests/platform/gtk/Skipped
@@ -54,6 +54,7 @@ accessibility/aria-labelledby-stay-within.html
accessibility/aria-link-supports-press.html
accessibility/aria-readonly.html
accessibility/aria-tab-roles.html
+accessibility/aria-used-on-image-maps.html
accessibility/button-press-action.html
accessibility/canvas.html
accessibility/editable-webarea-context-menu-point.html
diff --git a/LayoutTests/platform/win/Skipped b/LayoutTests/platform/win/Skipped
index 5ea9982..88d2959 100644
--- a/LayoutTests/platform/win/Skipped
+++ b/LayoutTests/platform/win/Skipped
@@ -374,6 +374,7 @@ accessibility/aria-readonly.html
accessibility/aria-roles.html
accessibility/aria-tables.html
accessibility/aria-tab-roles.html
+accessibility/aria-used-on-image-maps.html
accessibility/button-press-action.html
accessibility/canvas.html
accessibility/document-attributes.html
diff --git a/WebCore/accessibility/AccessibilityImageMapLink.cpp b/WebCore/accessibility/AccessibilityImageMapLink.cpp
index b1f9eba..06150b9 100644
--- a/WebCore/accessibility/AccessibilityImageMapLink.cpp
+++ b/WebCore/accessibility/AccessibilityImageMapLink.cpp
@@ -68,6 +68,18 @@ AccessibilityObject* AccessibilityImageMapLink::parentObject() const
return m_mapElement->document()->axObjectCache()->getOrCreate(m_mapElement->renderer());
}
+AccessibilityRole AccessibilityImageMapLink::roleValue() const
+{
+ if (!m_areaElement)
+ return WebCoreLinkRole;
+
+ const AtomicString& ariaRole = m_areaElement->getAttribute(roleAttr);
+ if (!ariaRole.isEmpty())
+ return AccessibilityObject::ariaRoleToWebCoreRole(ariaRole);
+
+ return WebCoreLinkRole;
+}
+
Element* AccessibilityImageMapLink::actionElement() const
{
return anchorElement();
diff --git a/WebCore/accessibility/AccessibilityImageMapLink.h b/WebCore/accessibility/AccessibilityImageMapLink.h
index 27ceba2..3024f37 100644
--- a/WebCore/accessibility/AccessibilityImageMapLink.h
+++ b/WebCore/accessibility/AccessibilityImageMapLink.h
@@ -47,7 +47,7 @@ public:
void setHTMLMapElement(HTMLMapElement* element) { m_mapElement = element; }
void setParent(AccessibilityObject* parent) { m_parent = parent; }
- virtual AccessibilityRole roleValue() const { return WebCoreLinkRole; }
+ virtual AccessibilityRole roleValue() const;
virtual bool accessibilityIsIgnored() const { return false; }
virtual bool isEnabled() const { return true; }
diff --git a/WebCore/accessibility/AccessibilityObject.cpp b/WebCore/accessibility/AccessibilityObject.cpp
index 215660f..93c1609 100644
--- a/WebCore/accessibility/AccessibilityObject.cpp
+++ b/WebCore/accessibility/AccessibilityObject.cpp
@@ -840,6 +840,90 @@ AccessibilityOrientation AccessibilityObject::orientation() const
// A tie goes to horizontal.
return AccessibilityOrientationHorizontal;
+}
+
+typedef HashMap<String, AccessibilityRole, CaseFoldingHash> ARIARoleMap;
+
+struct RoleEntry {
+ String ariaRole;
+ AccessibilityRole webcoreRole;
+};
+
+static ARIARoleMap* createARIARoleMap()
+{
+ const RoleEntry roles[] = {
+ { "alert", ApplicationAlertRole },
+ { "alertdialog", ApplicationAlertDialogRole },
+ { "application", LandmarkApplicationRole },
+ { "article", DocumentArticleRole },
+ { "banner", LandmarkBannerRole },
+ { "button", ButtonRole },
+ { "checkbox", CheckBoxRole },
+ { "complementary", LandmarkComplementaryRole },
+ { "contentinfo", LandmarkContentInfoRole },
+ { "dialog", ApplicationDialogRole },
+ { "directory", DirectoryRole },
+ { "grid", TableRole },
+ { "gridcell", CellRole },
+ { "columnheader", ColumnHeaderRole },
+ { "combobox", ComboBoxRole },
+ { "definition", DefinitionListDefinitionRole },
+ { "document", DocumentRole },
+ { "rowheader", RowHeaderRole },
+ { "group", GroupRole },
+ { "heading", HeadingRole },
+ { "img", ImageRole },
+ { "link", WebCoreLinkRole },
+ { "list", ListRole },
+ { "listitem", GroupRole },
+ { "listbox", ListBoxRole },
+ { "log", ApplicationLogRole },
+ // "option" isn't here because it may map to different roles depending on the parent element's role
+ { "main", LandmarkMainRole },
+ { "marquee", ApplicationMarqueeRole },
+ { "menu", MenuRole },
+ { "menubar", GroupRole },
+ // "menuitem" isn't here because it may map to different roles depending on the parent element's role
+ { "menuitemcheckbox", MenuItemRole },
+ { "menuitemradio", MenuItemRole },
+ { "note", DocumentNoteRole },
+ { "navigation", LandmarkNavigationRole },
+ { "option", ListBoxOptionRole },
+ { "presentation", IgnoredRole },
+ { "progressbar", ProgressIndicatorRole },
+ { "radio", RadioButtonRole },
+ { "radiogroup", RadioGroupRole },
+ { "region", DocumentRegionRole },
+ { "row", RowRole },
+ { "range", SliderRole },
+ { "search", LandmarkSearchRole },
+ { "separator", SplitterRole },
+ { "slider", SliderRole },
+ { "spinbutton", ProgressIndicatorRole },
+ { "status", ApplicationStatusRole },
+ { "tab", TabRole },
+ { "tablist", TabListRole },
+ { "tabpanel", TabPanelRole },
+ { "textbox", TextAreaRole },
+ { "timer", ApplicationTimerRole },
+ { "toolbar", ToolbarRole },
+ { "tooltip", UserInterfaceTooltipRole },
+ { "tree", TreeRole },
+ { "treeitem", TreeItemRole }
+ };
+ ARIARoleMap* roleMap = new ARIARoleMap;
+
+ const unsigned numRoles = sizeof(roles) / sizeof(roles[0]);
+ for (unsigned i = 0; i < numRoles; ++i)
+ roleMap->set(roles[i].ariaRole, roles[i].webcoreRole);
+ return roleMap;
+}
+
+AccessibilityRole AccessibilityObject::ariaRoleToWebCoreRole(const String& value)
+{
+ ASSERT(!value.isEmpty());
+ static const ARIARoleMap* roleMap = createARIARoleMap();
+ return roleMap->get(value);
}
} // namespace WebCore
diff --git a/WebCore/accessibility/AccessibilityObject.h b/WebCore/accessibility/AccessibilityObject.h
index 267a1df..a978a79 100644
--- a/WebCore/accessibility/AccessibilityObject.h
+++ b/WebCore/accessibility/AccessibilityObject.h
@@ -417,6 +417,8 @@ public:
virtual AccessibilityObject* activeDescendant() const { return 0; }
virtual void handleActiveDescendantChanged() { }
+ static AccessibilityRole ariaRoleToWebCoreRole(const String&);
+
virtual VisiblePositionRange visiblePositionRange() const { return VisiblePositionRange(); }
virtual VisiblePositionRange visiblePositionRangeForLine(unsigned) const { return VisiblePositionRange(); }
diff --git a/WebCore/accessibility/AccessibilityRenderObject.cpp b/WebCore/accessibility/AccessibilityRenderObject.cpp
index 1964814..8916b58 100644
--- a/WebCore/accessibility/AccessibilityRenderObject.cpp
+++ b/WebCore/accessibility/AccessibilityRenderObject.cpp
@@ -2435,90 +2435,6 @@ AccessibilityObject* AccessibilityRenderObject::observableObject() const
return 0;
}
-
-typedef HashMap<String, AccessibilityRole, CaseFoldingHash> ARIARoleMap;
-
-struct RoleEntry {
- String ariaRole;
- AccessibilityRole webcoreRole;
-};
-
-static const ARIARoleMap& createARIARoleMap()
-{
- const RoleEntry roles[] = {
- { "alert", ApplicationAlertRole },
- { "alertdialog", ApplicationAlertDialogRole },
- { "application", LandmarkApplicationRole },
- { "article", DocumentArticleRole },
- { "banner", LandmarkBannerRole },
- { "button", ButtonRole },
- { "checkbox", CheckBoxRole },
- { "complementary", LandmarkComplementaryRole },
- { "contentinfo", LandmarkContentInfoRole },
- { "dialog", ApplicationDialogRole },
- { "directory", DirectoryRole },
- { "grid", TableRole },
- { "gridcell", CellRole },
- { "columnheader", ColumnHeaderRole },
- { "combobox", ComboBoxRole },
- { "definition", DefinitionListDefinitionRole },
- { "document", DocumentRole },
- { "rowheader", RowHeaderRole },
- { "group", GroupRole },
- { "heading", HeadingRole },
- { "img", ImageRole },
- { "link", WebCoreLinkRole },
- { "list", ListRole },
- { "listitem", GroupRole },
- { "listbox", ListBoxRole },
- { "log", ApplicationLogRole },
- // "option" isn't here because it may map to different roles depending on the parent element's role
- { "main", LandmarkMainRole },
- { "marquee", ApplicationMarqueeRole },
- { "menu", MenuRole },
- { "menubar", GroupRole },
- // "menuitem" isn't here because it may map to different roles depending on the parent element's role
- { "menuitemcheckbox", MenuItemRole },
- { "menuitemradio", MenuItemRole },
- { "note", DocumentNoteRole },
- { "navigation", LandmarkNavigationRole },
- { "option", ListBoxOptionRole },
- { "presentation", IgnoredRole },
- { "progressbar", ProgressIndicatorRole },
- { "radio", RadioButtonRole },
- { "radiogroup", RadioGroupRole },
- { "region", DocumentRegionRole },
- { "row", RowRole },
- { "range", SliderRole },
- { "search", LandmarkSearchRole },
- { "separator", SplitterRole },
- { "slider", SliderRole },
- { "spinbutton", ProgressIndicatorRole },
- { "status", ApplicationStatusRole },
- { "tab", TabRole },
- { "tablist", TabListRole },
- { "tabpanel", TabPanelRole },
- { "textbox", TextAreaRole },
- { "timer", ApplicationTimerRole },
- { "toolbar", ToolbarRole },
- { "tooltip", UserInterfaceTooltipRole },
- { "tree", TreeRole },
- { "treeitem", TreeItemRole }
- };
- ARIARoleMap& roleMap = *new ARIARoleMap;
-
- const unsigned numRoles = sizeof(roles) / sizeof(roles[0]);
- for (unsigned i = 0; i < numRoles; ++i)
- roleMap.set(roles[i].ariaRole, roles[i].webcoreRole);
- return roleMap;
-}
-
-static AccessibilityRole ariaRoleToWebCoreRole(String value)
-{
- ASSERT(!value.isEmpty() && !value.isNull());
- static const ARIARoleMap& roleMap = createARIARoleMap();
- return roleMap.get(value);
-}
AccessibilityRole AccessibilityRenderObject::determineAriaRoleAttribute() const
{
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list