+2006-10-17 David Harrison <harrison@apple.com>
+
+ Reviewed by Adele.
+
+ <rdar://problem/4770453> VO not honoring secure edit fields in web pages
+
+ * bridge/mac/WebCoreAXObject.mm:
+ (-[WebCoreAXObject isPasswordField]):
+ New. Checks for input with inputType() of PASSWORD.
+
+ (-[WebCoreAXObject subrole]):
+ Returns NSAccessibilitySecureTextFieldSubrole if [self isPasswordField].
+
+ (-[WebCoreAXObject roleDescription]):
+ Pass [self subrole] instead of nil when calling NSAccessibilityRoleDescription.
+
+ (-[WebCoreAXObject value]):
+ Return nil if [self isPasswordField].
+
+ (-[WebCoreAXObject accessibilityAttributeNames]):
+ Return generic attributes if [self isPasswordField].
+
+ (-[WebCoreAXObject accessibilityParameterizedAttributeNames]):
+ Return empty array if [self isPasswordField].
+
2006-10-17 David Hyatt <hyatt@apple.com>
Fix "flash to white' problem on yahoo.com as it finishes loading. Refine the FOUC suppression
{
return m_areaElement || (!m_renderer->isImage() && m_renderer->element() && m_renderer->element()->isLink());
}
+
-(BOOL)isTextControl
{
return m_renderer->isTextField() || m_renderer->isTextArea();
}
+-(BOOL)isPasswordField
+{
+ if (!m_renderer->element() || !m_renderer->element()->hasTagName(inputTag))
+ return false;
+
+ HTMLInputElement* input = static_cast<HTMLInputElement*>(m_renderer->element());
+ return input->inputType() == HTMLInputElement::PASSWORD;
+}
+
-(BOOL)isAttachment
{
// widgets are the replaced elements that we represent to AX as attachments
-(NSString*)subrole
{
+ if ([self isPasswordField])
+ return NSAccessibilitySecureTextFieldSubrole;
+
if ([self isAttachment])
return [[self attachmentView] accessibilityAttributeValue:NSAccessibilitySubroleAttribute];
NSString* role = [self role];
if ([role isEqualToString:NSAccessibilityButtonRole])
- return NSAccessibilityRoleDescription(NSAccessibilityButtonRole, nil);
+ return NSAccessibilityRoleDescription(NSAccessibilityButtonRole, [self subrole]);
if ([role isEqualToString:NSAccessibilityPopUpButtonRole])
- return NSAccessibilityRoleDescription(NSAccessibilityPopUpButtonRole, nil);
+ return NSAccessibilityRoleDescription(NSAccessibilityPopUpButtonRole, [self subrole]);
if ([role isEqualToString:NSAccessibilityStaticTextRole])
- return NSAccessibilityRoleDescription(NSAccessibilityStaticTextRole, nil);
+ return NSAccessibilityRoleDescription(NSAccessibilityStaticTextRole, [self subrole]);
if ([role isEqualToString:NSAccessibilityImageRole])
- return NSAccessibilityRoleDescription(NSAccessibilityImageRole, nil);
+ return NSAccessibilityRoleDescription(NSAccessibilityImageRole, [self subrole]);
if ([role isEqualToString:NSAccessibilityGroupRole])
- return NSAccessibilityRoleDescription(NSAccessibilityGroupRole, nil);
+ return NSAccessibilityRoleDescription(NSAccessibilityGroupRole, [self subrole]);
if ([role isEqualToString:NSAccessibilityCheckBoxRole])
- return NSAccessibilityRoleDescription(NSAccessibilityCheckBoxRole, nil);
+ return NSAccessibilityRoleDescription(NSAccessibilityCheckBoxRole, [self subrole]);
if ([role isEqualToString:NSAccessibilityRadioButtonRole])
- return NSAccessibilityRoleDescription(NSAccessibilityRadioButtonRole, nil);
+ return NSAccessibilityRoleDescription(NSAccessibilityRadioButtonRole, [self subrole]);
if ([role isEqualToString:NSAccessibilityTextFieldRole])
- return NSAccessibilityRoleDescription(NSAccessibilityTextFieldRole, nil);
+ return NSAccessibilityRoleDescription(NSAccessibilityTextFieldRole, [self subrole]);
if ([role isEqualToString:NSAccessibilityTextAreaRole])
- return NSAccessibilityRoleDescription(NSAccessibilityTextAreaRole, nil);
+ return NSAccessibilityRoleDescription(NSAccessibilityTextAreaRole, [self subrole]);
if ([role isEqualToString:@"AXWebArea"])
return UI_STRING("web area", "accessibility role description for web area");
-(id)value
{
- if (!m_renderer || m_areaElement)
+ if (!m_renderer || m_areaElement || [self isPasswordField])
return nil;
if (m_renderer->isText())
[tempArray release];
}
- if (!m_renderer)
+ if (!m_renderer || [self isPasswordField])
return attributes;
if ([self isWebArea])
return webAreaAttrs;
-
+
if ([self isTextControl])
return textAttrs;
[tempArray release];
}
+ if ([self isPasswordField])
+ return [NSArray array];
+
if (!m_renderer)
return paramAttrs;