Diff
Modified: trunk/LayoutTests/ChangeLog (149050 => 149051)
--- trunk/LayoutTests/ChangeLog 2013-04-24 18:16:22 UTC (rev 149050)
+++ trunk/LayoutTests/ChangeLog 2013-04-24 18:33:12 UTC (rev 149051)
@@ -1,3 +1,19 @@
+2013-04-24 Chris Fleizach <cfleiz...@apple.com>
+
+ AX: WAI-ARIA landmarks no longer speak type of landmark on iOS
+ https://bugs.webkit.org/show_bug.cgi?id=114547
+
+ Reviewed by David Kilzer.
+
+ * platform/iphone-simulator/accessibility/landmark-type-expected.txt: Added.
+ * platform/iphone-simulator/accessibility/landmark-type.html: Added.
+ * platform/iphone-simulator/accessibility/link-with-images-text-expected.txt:
+ * platform/iphone-simulator/accessibility/link-with-images-text.html:
+ Minor change to accomodate trimming of white space.
+ * platform/iphone-simulator/accessibility/math-expected.txt:
+ * platform/iphone-simulator/accessibility/math.html:
+ Math objects now include "math" as the landmark type.
+
2013-04-24 Geoffrey Garen <gga...@apple.com>
Filled out more cases of branch folding in the DFG
Added: trunk/LayoutTests/platform/iphone-simulator/accessibility/landmark-type-expected.txt (0 => 149051)
--- trunk/LayoutTests/platform/iphone-simulator/accessibility/landmark-type-expected.txt (rev 0)
+++ trunk/LayoutTests/platform/iphone-simulator/accessibility/landmark-type-expected.txt 2013-04-24 18:33:12 UTC (rev 149051)
@@ -0,0 +1,13 @@
+text
+text
+This tests that landmarks return their type as part of the AX label.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS main.iphoneLabel is 'AXLabel: main'
+PASS banner.iphoneLabel is 'AXLabel: banner'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/platform/iphone-simulator/accessibility/landmark-type.html (0 => 149051)
--- trunk/LayoutTests/platform/iphone-simulator/accessibility/landmark-type.html (rev 0)
+++ trunk/LayoutTests/platform/iphone-simulator/accessibility/landmark-type.html 2013-04-24 18:33:12 UTC (rev 149051)
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href=""
+<script src=""
+<script>
+var successfullyParsed = false;
+</script>
+</head>
+<body id="body">
+
+<div role="main" id="main">
+text
+</div>
+
+<div role="banner" id="banner">
+text
+</div>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+
+ description("This tests that landmarks return their type as part of the AX label.");
+
+ if (window.accessibilityController) {
+
+ var main = accessibilityController.accessibleElementById("main");
+ shouldBe("main.iphoneLabel", "'AXLabel: main'");
+
+ var banner = accessibilityController.accessibleElementById("banner");
+ shouldBe("banner.iphoneLabel", "'AXLabel: banner'");
+ }
+
+ successfullyParsed = true;
+</script>
+
+<script src=""
+</body>
+</html>
+
Modified: trunk/LayoutTests/platform/iphone-simulator/accessibility/link-with-images-text-expected.txt (149050 => 149051)
--- trunk/LayoutTests/platform/iphone-simulator/accessibility/link-with-images-text-expected.txt 2013-04-24 18:16:22 UTC (rev 149050)
+++ trunk/LayoutTests/platform/iphone-simulator/accessibility/link-with-images-text-expected.txt 2013-04-24 18:33:12 UTC (rev 149051)
@@ -5,7 +5,7 @@
PASS obj.iphoneIsElement is true
-PASS obj.iphoneLabel is 'AXLabel: iPhoneFrom $99'
+PASS obj.iphoneLabel is 'AXLabel: iPhoneFrom $99'
PASS successfullyParsed is true
TEST COMPLETE
Modified: trunk/LayoutTests/platform/iphone-simulator/accessibility/link-with-images-text.html (149050 => 149051)
--- trunk/LayoutTests/platform/iphone-simulator/accessibility/link-with-images-text.html 2013-04-24 18:16:22 UTC (rev 149050)
+++ trunk/LayoutTests/platform/iphone-simulator/accessibility/link-with-images-text.html 2013-04-24 18:33:12 UTC (rev 149051)
@@ -28,7 +28,7 @@
var obj = accessibilityController.rootElement.childAtIndex(0).childAtIndex(0);
shouldBe("obj.iphoneIsElement", "true");
- shouldBe("obj.iphoneLabel", "'AXLabel: iPhoneFrom $99'");
+ shouldBe("obj.iphoneLabel", "'AXLabel: iPhoneFrom $99'");
}
successfullyParsed = true;
Modified: trunk/LayoutTests/platform/iphone-simulator/accessibility/math-expected.txt (149050 => 149051)
--- trunk/LayoutTests/platform/iphone-simulator/accessibility/math-expected.txt 2013-04-24 18:16:22 UTC (rev 149050)
+++ trunk/LayoutTests/platform/iphone-simulator/accessibility/math-expected.txt 2013-04-24 18:33:12 UTC (rev 149051)
@@ -17,10 +17,10 @@
PASS group.childrenCount is 5
-PASS group.childAtIndex(0).iphoneLabel is 'AXLabel: Raman scattering study of the '
-PASS group.childAtIndex(1).iphoneLabel is 'AXLabel: F e sub 1 minus x, end subscript. C o sub x, S b sub 2'
-PASS group.childAtIndex(2).iphoneLabel is 'AXLabel: and '
-PASS group.childAtIndex(3).iphoneLabel is 'AXLabel: open, 0 less than or equal to x less than or equal to 1, close'
+PASS group.childAtIndex(0).iphoneLabel is 'AXLabel: Raman scattering study of the'
+PASS group.childAtIndex(1).iphoneLabel is 'AXLabel: F e sub 1 minus x, end subscript. C o sub x, S b sub 2, math'
+PASS group.childAtIndex(2).iphoneLabel is 'AXLabel: and'
+PASS group.childAtIndex(3).iphoneLabel is 'AXLabel: open, 0 less than or equal to x less than or equal to 1, close, math'
PASS group.childAtIndex(4).iphoneLabel is 'AXLabel: single crystals.'
PASS group.childAtIndex(0).iphoneIsElement is true
PASS group.childAtIndex(1).iphoneIsElement is true
Modified: trunk/LayoutTests/platform/iphone-simulator/accessibility/math.html (149050 => 149051)
--- trunk/LayoutTests/platform/iphone-simulator/accessibility/math.html 2013-04-24 18:16:22 UTC (rev 149050)
+++ trunk/LayoutTests/platform/iphone-simulator/accessibility/math.html 2013-04-24 18:33:12 UTC (rev 149051)
@@ -75,10 +75,10 @@
document.getElementById("group").focus();
var group = accessibilityController.focusedElement;
shouldBe("group.childrenCount", "5");
- shouldBe("group.childAtIndex(0).iphoneLabel", "'AXLabel: Raman scattering study of the '");
- shouldBe("group.childAtIndex(1).iphoneLabel", "'AXLabel: F e sub 1 minus x, end subscript. C o sub x, S b sub 2'");
- shouldBe("group.childAtIndex(2).iphoneLabel", "'AXLabel: and '");
- shouldBe("group.childAtIndex(3).iphoneLabel", "'AXLabel: open, 0 less than or equal to x less than or equal to 1, close'");
+ shouldBe("group.childAtIndex(0).iphoneLabel", "'AXLabel: Raman scattering study of the'");
+ shouldBe("group.childAtIndex(1).iphoneLabel", "'AXLabel: F e sub 1 minus x, end subscript. C o sub x, S b sub 2, math'");
+ shouldBe("group.childAtIndex(2).iphoneLabel", "'AXLabel: and'");
+ shouldBe("group.childAtIndex(3).iphoneLabel", "'AXLabel: open, 0 less than or equal to x less than or equal to 1, close, math'");
shouldBe("group.childAtIndex(4).iphoneLabel", "'AXLabel: single crystals.'");
shouldBeTrue("group.childAtIndex(0).iphoneIsElement");
Modified: trunk/Source/WebCore/ChangeLog (149050 => 149051)
--- trunk/Source/WebCore/ChangeLog 2013-04-24 18:16:22 UTC (rev 149050)
+++ trunk/Source/WebCore/ChangeLog 2013-04-24 18:33:12 UTC (rev 149051)
@@ -1,3 +1,40 @@
+2013-04-24 Chris Fleizach <cfleiz...@apple.com>
+
+ AX: WAI-ARIA landmarks no longer speak type of landmark on iOS
+ https://bugs.webkit.org/show_bug.cgi?id=114547
+
+ Reviewed by David Kilzer.
+
+ We want iOS to speak the landmark type.
+ I've moved the landmark role description to the base Mac class and exposed
+ these localized strings to iOS (the ones used to return landmark descriptions).
+
+ I've also updated the accessibilityLabel to account for landmark type, but also
+ handle multiple label sources more gracefully by appending commas, which changed a few
+ tests in minor ways.
+
+ Test: platform/iphone-simulator/accessibility/landmark-type.html
+
+ * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
+ (-[WebAccessibilityObjectWrapper accessibilityLabel]):
+ * accessibility/mac/WebAccessibilityObjectWrapperBase.h:
+ * accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
+ (-[WebAccessibilityObjectWrapperBase ariaLandmarkRoleDescription]):
+ * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+ (-[WebAccessibilityObjectWrapper roleDescription]):
+ * platform/LocalizedStrings.cpp:
+ (WebCore):
+ (WebCore::AXButtonActionVerb):
+ (WebCore::AXRadioButtonActionVerb):
+ (WebCore::AXTextFieldActionVerb):
+ (WebCore::AXCheckedCheckBoxActionVerb):
+ (WebCore::AXUncheckedCheckBoxActionVerb):
+ (WebCore::AXLinkActionVerb):
+ (WebCore::AXMenuListPopupActionVerb):
+ (WebCore::AXMenuListActionVerb):
+ * platform/LocalizedStrings.h:
+ (WebCore):
+
2013-04-24 Andreas Kling <akl...@apple.com>
CSS attribute selectors cause unnecessary style recalc when setting attribute to same value.
Modified: trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm (149050 => 149051)
--- trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm 2013-04-24 18:16:22 UTC (rev 149050)
+++ trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm 2013-04-24 18:33:12 UTC (rev 149051)
@@ -698,6 +698,16 @@
return NO;
}
+static void appendStringToResult(NSMutableString *result, NSString *string)
+{
+ ASSERT(result);
+ if (![string length])
+ return;
+ if ([result length])
+ [result appendString:@", "];
+ [result appendString:string];
+}
+
- (NSString *)accessibilityLabel
{
if (![self _prepareAccessibilityCall])
@@ -712,19 +722,20 @@
// so concatentation will yield the best result.
NSString *axTitle = [self accessibilityTitle];
NSString *axDescription = [self accessibilityDescription];
- NSUInteger axTitleLength = [axTitle length];
- NSUInteger axDescriptionLength = [axDescription length];
+ NSString *landmarkDescription = [self ariaLandmarkRoleDescription];
+
+ NSMutableString *result = [NSMutableString string];
+
+ appendStringToResult(result, axTitle);
+ appendStringToResult(result, axDescription);
+ if ([self stringValueShouldBeUsedInLabel]) {
+ NSString *valueLabel = m_object->stringValue();
+ valueLabel = [valueLabel stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
+ appendStringToResult(result, valueLabel);
+ }
+ appendStringToResult(result, landmarkDescription);
- if (axTitleLength && axDescriptionLength)
- return [axTitle stringByAppendingFormat:@", %@", axDescription];
- else if (axTitleLength)
- return axTitle;
- else if (axDescriptionLength)
- return axDescription;
- else if ([self stringValueShouldBeUsedInLabel])
- return m_object->stringValue();
-
- return nil;
+ return [result length] ? result : nil;
}
- (AccessibilityTableCell*)tableCellParent
Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h (149050 => 149051)
--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h 2013-04-24 18:16:22 UTC (rev 149050)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h 2013-04-24 18:33:12 UTC (rev 149051)
@@ -52,6 +52,8 @@
- (NSString *)accessibilityDescription;
- (NSString *)accessibilityHelpText;
+- (NSString *)ariaLandmarkRoleDescription;
+
- (id)attachmentView;
// Used to inform an element when a notification is posted for it. Used by DRT.
- (void)accessibilityPostedNotification:(NSString *)notificationName;
Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm (149050 => 149051)
--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm 2013-04-24 18:16:22 UTC (rev 149050)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm 2013-04-24 18:33:12 UTC (rev 149051)
@@ -292,6 +292,56 @@
return CGPointZero;
}
+- (NSString *)ariaLandmarkRoleDescription
+{
+ switch (m_object->roleValue()) {
+ case LandmarkApplicationRole:
+ return AXARIAContentGroupText(@"ARIALandmarkApplication");
+ case LandmarkBannerRole:
+ return AXARIAContentGroupText(@"ARIALandmarkBanner");
+ case LandmarkComplementaryRole:
+ return AXARIAContentGroupText(@"ARIALandmarkComplementary");
+ case LandmarkContentInfoRole:
+ return AXARIAContentGroupText(@"ARIALandmarkContentInfo");
+ case LandmarkMainRole:
+ return AXARIAContentGroupText(@"ARIALandmarkMain");
+ case LandmarkNavigationRole:
+ return AXARIAContentGroupText(@"ARIALandmarkNavigation");
+ case LandmarkSearchRole:
+ return AXARIAContentGroupText(@"ARIALandmarkSearch");
+ case ApplicationAlertRole:
+ return AXARIAContentGroupText(@"ARIAApplicationAlert");
+ case ApplicationAlertDialogRole:
+ return AXARIAContentGroupText(@"ARIAApplicationAlertDialog");
+ case ApplicationDialogRole:
+ return AXARIAContentGroupText(@"ARIAApplicationDialog");
+ case ApplicationLogRole:
+ return AXARIAContentGroupText(@"ARIAApplicationLog");
+ case ApplicationMarqueeRole:
+ return AXARIAContentGroupText(@"ARIAApplicationMarquee");
+ case ApplicationStatusRole:
+ return AXARIAContentGroupText(@"ARIAApplicationStatus");
+ case ApplicationTimerRole:
+ return AXARIAContentGroupText(@"ARIAApplicationTimer");
+ case DocumentRole:
+ return AXARIAContentGroupText(@"ARIADocument");
+ case DocumentArticleRole:
+ return AXARIAContentGroupText(@"ARIADocumentArticle");
+ case DocumentMathRole:
+ return AXARIAContentGroupText(@"ARIADocumentMath");
+ case DocumentNoteRole:
+ return AXARIAContentGroupText(@"ARIADocumentNote");
+ case DocumentRegionRole:
+ return AXARIAContentGroupText(@"ARIADocumentRegion");
+ case UserInterfaceTooltipRole:
+ return AXARIAContentGroupText(@"ARIAUserInterfaceTooltip");
+ case TabPanelRole:
+ return AXARIAContentGroupText(@"ARIATabPanel");
+ default:
+ return nil;
+ }
+}
+
// This is set by DRT when it wants to listen for notifications.
static BOOL accessibilityShouldRepostNotifications;
+ (void)accessibilitySetShouldRepostNotifications:(BOOL)repost
Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (149050 => 149051)
--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm 2013-04-24 18:16:22 UTC (rev 149050)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm 2013-04-24 18:33:12 UTC (rev 149051)
@@ -1875,51 +1875,12 @@
NSString* axRole = [self role];
if ([axRole isEqualToString:NSAccessibilityGroupRole]) {
+
+ NSString *ariaLandmarkRoleDescription = [self ariaLandmarkRoleDescription];
+ if (ariaLandmarkRoleDescription)
+ return ariaLandmarkRoleDescription;
+
switch (m_object->roleValue()) {
- default:
- return NSAccessibilityRoleDescription(NSAccessibilityGroupRole, [self subrole]);
- case LandmarkApplicationRole:
- return AXARIAContentGroupText(@"ARIALandmarkApplication");
- case LandmarkBannerRole:
- return AXARIAContentGroupText(@"ARIALandmarkBanner");
- case LandmarkComplementaryRole:
- return AXARIAContentGroupText(@"ARIALandmarkComplementary");
- case LandmarkContentInfoRole:
- return AXARIAContentGroupText(@"ARIALandmarkContentInfo");
- case LandmarkMainRole:
- return AXARIAContentGroupText(@"ARIALandmarkMain");
- case LandmarkNavigationRole:
- return AXARIAContentGroupText(@"ARIALandmarkNavigation");
- case LandmarkSearchRole:
- return AXARIAContentGroupText(@"ARIALandmarkSearch");
- case ApplicationAlertRole:
- return AXARIAContentGroupText(@"ARIAApplicationAlert");
- case ApplicationAlertDialogRole:
- return AXARIAContentGroupText(@"ARIAApplicationAlertDialog");
- case ApplicationDialogRole:
- return AXARIAContentGroupText(@"ARIAApplicationDialog");
- case ApplicationLogRole:
- return AXARIAContentGroupText(@"ARIAApplicationLog");
- case ApplicationMarqueeRole:
- return AXARIAContentGroupText(@"ARIAApplicationMarquee");
- case ApplicationStatusRole:
- return AXARIAContentGroupText(@"ARIAApplicationStatus");
- case ApplicationTimerRole:
- return AXARIAContentGroupText(@"ARIAApplicationTimer");
- case DocumentRole:
- return AXARIAContentGroupText(@"ARIADocument");
- case DocumentArticleRole:
- return AXARIAContentGroupText(@"ARIADocumentArticle");
- case DocumentMathRole:
- return AXARIAContentGroupText(@"ARIADocumentMath");
- case DocumentNoteRole:
- return AXARIAContentGroupText(@"ARIADocumentNote");
- case DocumentRegionRole:
- return AXARIAContentGroupText(@"ARIADocumentRegion");
- case UserInterfaceTooltipRole:
- return AXARIAContentGroupText(@"ARIAUserInterfaceTooltip");
- case TabPanelRole:
- return AXARIAContentGroupText(@"ARIATabPanel");
case DefinitionRole:
return AXDefinitionText();
case DescriptionListTermRole:
@@ -1928,6 +1889,8 @@
return AXDescriptionListDetailText();
case FooterRole:
return AXFooterRoleDescriptionText();
+ default:
+ return NSAccessibilityRoleDescription(NSAccessibilityGroupRole, [self subrole]);
}
}
Modified: trunk/Source/WebCore/platform/LocalizedStrings.cpp (149050 => 149051)
--- trunk/Source/WebCore/platform/LocalizedStrings.cpp 2013-04-24 18:16:22 UTC (rev 149050)
+++ trunk/Source/WebCore/platform/LocalizedStrings.cpp 2013-04-24 18:33:12 UTC (rev 149051)
@@ -517,6 +517,7 @@
#endif // ENABLE(CONTEXT_MENUS)
+#if !PLATFORM(IOS)
String searchMenuNoRecentSearchesText()
{
return WEB_UI_STRING("No recent searches", "Label for only item in menu that appears when clicking on the search field image, when no searches have been performed");
@@ -586,8 +587,51 @@
{
return WEB_UI_STRING("file upload button", "accessibility role description for a file upload button");
}
+
+String AXButtonActionVerb()
+{
+ return WEB_UI_STRING("press", "Verb stating the action that will occur when a button is pressed, as used by accessibility");
+}
-#if PLATFORM(MAC)
+String AXRadioButtonActionVerb()
+{
+ return WEB_UI_STRING("select", "Verb stating the action that will occur when a radio button is clicked, as used by accessibility");
+}
+
+String AXTextFieldActionVerb()
+{
+ return WEB_UI_STRING("activate", "Verb stating the action that will occur when a text field is selected, as used by accessibility");
+}
+
+String AXCheckedCheckBoxActionVerb()
+{
+ return WEB_UI_STRING("uncheck", "Verb stating the action that will occur when a checked checkbox is clicked, as used by accessibility");
+}
+
+String AXUncheckedCheckBoxActionVerb()
+{
+ return WEB_UI_STRING("check", "Verb stating the action that will occur when an unchecked checkbox is clicked, as used by accessibility");
+}
+
+String AXLinkActionVerb()
+{
+ return WEB_UI_STRING("jump", "Verb stating the action that will occur when a link is clicked, as used by accessibility");
+}
+
+String AXMenuListPopupActionVerb()
+{
+ notImplemented();
+ return "select";
+}
+
+String AXMenuListActionVerb()
+{
+ notImplemented();
+ return "select";
+}
+#endif // !PLATFORM(IOS)
+
+#if PLATFORM(MAC) || PLATFORM(IOS)
String AXARIAContentGroupText(const String& ariaType)
{
if (ariaType == "ARIAApplicationAlert")
@@ -634,50 +678,8 @@
return WEB_UI_STRING("math", "An ARIA accessibility group that contains mathematical symbols.");
return String();
}
-#endif
-
-String AXButtonActionVerb()
-{
- return WEB_UI_STRING("press", "Verb stating the action that will occur when a button is pressed, as used by accessibility");
-}
+#endif // PLATFORM(MAC) || PLATFORM(IOS)
-String AXRadioButtonActionVerb()
-{
- return WEB_UI_STRING("select", "Verb stating the action that will occur when a radio button is clicked, as used by accessibility");
-}
-
-String AXTextFieldActionVerb()
-{
- return WEB_UI_STRING("activate", "Verb stating the action that will occur when a text field is selected, as used by accessibility");
-}
-
-String AXCheckedCheckBoxActionVerb()
-{
- return WEB_UI_STRING("uncheck", "Verb stating the action that will occur when a checked checkbox is clicked, as used by accessibility");
-}
-
-String AXUncheckedCheckBoxActionVerb()
-{
- return WEB_UI_STRING("check", "Verb stating the action that will occur when an unchecked checkbox is clicked, as used by accessibility");
-}
-
-String AXLinkActionVerb()
-{
- return WEB_UI_STRING("jump", "Verb stating the action that will occur when a link is clicked, as used by accessibility");
-}
-
-String AXMenuListPopupActionVerb()
-{
- notImplemented();
- return "select";
-}
-
-String AXMenuListActionVerb()
-{
- notImplemented();
- return "select";
-}
-
String missingPluginText()
{
return WEB_UI_STRING("Missing Plug-in", "Label text to be used when a plugin is missing");
Modified: trunk/Source/WebCore/platform/LocalizedStrings.h (149050 => 149051)
--- trunk/Source/WebCore/platform/LocalizedStrings.h 2013-04-24 18:16:22 UTC (rev 149050)
+++ trunk/Source/WebCore/platform/LocalizedStrings.h 2013-04-24 18:33:12 UTC (rev 149051)
@@ -158,9 +158,6 @@
String AXDescriptionListDetailText();
String AXFooterRoleDescriptionText();
String AXFileUploadButtonText();
-#if PLATFORM(MAC)
- String AXARIAContentGroupText(const String& ariaType);
-#endif
String AXButtonActionVerb();
String AXRadioButtonActionVerb();
@@ -203,6 +200,9 @@
// technical standard 35, Locale Data Markup Language, e.g. "'Week' ww, yyyy"
String weekFormatInLDML();
#endif
+#if PLATFORM(MAC) || PLATFORM(IOS)
+ String AXARIAContentGroupText(const String& ariaType);
+#endif
String missingPluginText();
String crashedPluginText();