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

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: Fix string problems. 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
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..924e79f1ae83016170050b4e7bda4a151b21db41 100644
--- a/ui/views/widget/native_widget_mac_accessibility_unittest.mm
+++ b/ui/views/widget/native_widget_mac_accessibility_unittest.mm
@@ -6,6 +6,7 @@
#import <Cocoa/Cocoa.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 +462,52 @@ 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) {
+ // Don't check Cocoa's attribute values for PlaceHolder and Value here -
+ // there are inconsistencies where they will show up in the Accessibility
+ // Inspector but aren't reported by -accessibilityAttributeNames.
tapted 2017/02/23 06:20:34 Is there any use in something like: if (base::mac
Patti Lor 2017/02/24 04:36:14 Yep! That works, thanks for the suggestion and the
+ SCOPED_TRACE(base::SysNSStringToUTF8([NSString
+ stringWithFormat:@"Missing attribute is: %@", attribute_name]));
+ EXPECT_TRUE([views_attributes containsObject:attribute_name]);
+ }
+ 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]);
tapted 2017/02/23 06:20:34 so what _is_ in cocoa_attributes? It's possible
Patti Lor 2017/02/24 04:36:14 Erm, pretty much everything is still in |cocoa_att
+ }
+}
+
} // namespace views

Powered by Google App Engine
This is Rietveld 408576698