Chromium Code Reviews| 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 |