Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(344)

Unified Diff: ui/views/widget/native_widget_mac_accessibility_unittest.mm

Issue 2706743002: MacViews/a11y: Disable most text-specific attributes for protected textfields. (Closed)
Patch Set: Review comments. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/accessibility/platform/ax_platform_node_mac.mm ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/widget/native_widget_mac_accessibility_unittest.mm
diff --git a/ui/views/widget/native_widget_mac_accessibility_unittest.mm b/ui/views/widget/native_widget_mac_accessibility_unittest.mm
index 7d26ab8301a39a32874a0c47946860fefdd93aab..24ffdb15515eaf214e3381c730dd42cf0d829efc 100644
--- a/ui/views/widget/native_widget_mac_accessibility_unittest.mm
+++ b/ui/views/widget/native_widget_mac_accessibility_unittest.mm
@@ -6,6 +6,9 @@
#import <Cocoa/Cocoa.h>
+#include "base/mac/mac_util.h"
+#import "base/mac/sdk_forward_declarations.h"
+#include "base/strings/stringprintf.h"
#include "base/strings/sys_string_conversions.h"
#include "base/strings/utf_string_conversions.h"
#import "testing/gtest_mac.h"
@@ -461,4 +464,60 @@ TEST_F(NativeWidgetMacAccessibilityTest, PressAction) {
EXPECT_TRUE(view->mouse_was_pressed());
}
+// Test text-specific attributes that should not be supported for protected
+// textfields.
+TEST_F(NativeWidgetMacAccessibilityTest, ProtectedTextfields) {
+ Textfield* textfield = AddChildTextfield(GetWidgetBounds().size());
+ textfield->SetTextInputType(ui::TEXT_INPUT_TYPE_PASSWORD);
+
+ // Get the Textfield accessibility object.
+ NSPoint midpoint = gfx::ScreenPointToNSPoint(GetWidgetBounds().CenterPoint());
+ id ax_node = [widget()->GetNativeWindow() accessibilityHitTest:midpoint];
+ EXPECT_TRUE(ax_node);
+
+ // Create a native Cocoa NSSecureTextField to compare against.
+ base::scoped_nsobject<NSSecureTextField> cocoa_secure_textfield(
+ [[NSSecureTextField alloc] initWithFrame:NSMakeRect(0, 0, 10, 10)]);
+
+ NSArray* views_attributes = [ax_node accessibilityAttributeNames];
+ NSArray* cocoa_attributes =
+ [cocoa_secure_textfield accessibilityAttributeNames];
+
+ NSArray* const expected_supported_attributes = @[
+ NSAccessibilityValueAttribute, NSAccessibilityPlaceholderValueAttribute
+ ];
+ NSArray* const expected_unsupported_attributes = @[
+ NSAccessibilitySelectedTextAttribute,
+ NSAccessibilitySelectedTextRangeAttribute,
+ NSAccessibilityNumberOfCharactersAttribute,
+ NSAccessibilityVisibleCharacterRangeAttribute,
+ NSAccessibilityInsertionPointLineNumberAttribute
+ ];
+
+ for (NSString* attribute_name in expected_supported_attributes) {
+ SCOPED_TRACE(base::SysNSStringToUTF8([NSString
+ stringWithFormat:@"Missing attribute is: %@", attribute_name]));
+ EXPECT_TRUE([views_attributes containsObject:attribute_name]);
+ }
+ if (base::mac::IsAtLeastOS10_10()) {
+ // Check Cocoa's attribute values for PlaceHolder and Value here separately
+ // - these are using the new NSAccessibility protocol.
+ EXPECT_TRUE([cocoa_secure_textfield
+ isAccessibilitySelectorAllowed:@selector(
+ accessibilityPlaceholderValue)]);
+ EXPECT_TRUE([cocoa_secure_textfield
+ isAccessibilitySelectorAllowed:@selector(accessibilityValue)]);
+ }
+
+ EXPECT_FALSE(
+ [ax_node accessibilityIsAttributeSettable:NSAccessibilityValueAttribute]);
+
+ for (NSString* attribute_name in expected_unsupported_attributes) {
+ SCOPED_TRACE(base::SysNSStringToUTF8([NSString
+ stringWithFormat:@"Missing attribute is: %@", attribute_name]));
+ EXPECT_FALSE([views_attributes containsObject:attribute_name]);
+ EXPECT_FALSE([cocoa_attributes containsObject:attribute_name]);
+ }
+}
+
} // namespace views
« no previous file with comments | « ui/accessibility/platform/ax_platform_node_mac.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698