Index: content/browser/accessibility/browser_accessibility_cocoa.mm |
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm |
index 06b17ccdb8a4d6bc87095e847adcdfe6705974a0..1b720658e242816b88432d9b22c9c6afb2ac7cf8 100644 |
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm |
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm |
@@ -391,15 +391,35 @@ NSDictionary* attributeToMethodNameMap = nil; |
} |
- (NSString*)invalid { |
- base::string16 invalidUTF; |
- if (!browserAccessibility_->GetHtmlAttribute("aria-invalid", &invalidUTF)) |
- return NULL; |
- NSString* invalid = base::SysUTF16ToNSString(invalidUTF); |
- if ([invalid isEqualToString:@"false"] || |
- [invalid isEqualToString:@""]) { |
+ int invalidState; |
+ if (!browserAccessibility_->GetIntAttribute( |
+ ui::AX_ATTR_INVALID_STATE, &invalidState)) |
return @"false"; |
+ |
+ switch (invalidState) { |
+ case ui::AX_INVALID_STATE_FALSE: |
+ return @"false"; |
+ case ui::AX_INVALID_STATE_TRUE: |
+ return @"true"; |
+ case ui::AX_INVALID_STATE_SPELLING: |
+ return @"spelling"; |
+ case ui::AX_INVALID_STATE_GRAMMAR: |
+ return @"grammar"; |
+ case ui::AX_INVALID_STATE_OTHER: |
+ { |
+ std::string ariaInvalidValue; |
+ if (browserAccessibility_->GetStringAttribute( |
+ ui::AX_ATTR_ARIA_INVALID_VALUE, |
+ &ariaInvalidValue)) |
+ return base::SysUTF8ToNSString(ariaInvalidValue); |
+ // Return @"true" since we cannot be more specific about the value. |
+ return @"true"; |
+ } |
+ default: |
+ NOTREACHED(); |
} |
- return invalid; |
+ |
+ return @"false"; |
} |
- (NSString*)placeholder { |