| 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
|
|
|