summaryrefslogtreecommitdiff
path: root/chromium/ui/views/widget/native_widget_mac_accessibility_unittest.mm
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-11-20 10:33:36 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-11-22 11:45:12 +0000
commitbe59a35641616a4cf23c4a13fa0632624b021c1b (patch)
tree9da183258bdf9cc413f7562079d25ace6955467f /chromium/ui/views/widget/native_widget_mac_accessibility_unittest.mm
parentd702e4b6a64574e97fc7df8fe3238cde70242080 (diff)
downloadqtwebengine-chromium-be59a35641616a4cf23c4a13fa0632624b021c1b.tar.gz
BASELINE: Update Chromium to 62.0.3202.101
Change-Id: I2d5eca8117600df6d331f6166ab24d943d9814ac Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/ui/views/widget/native_widget_mac_accessibility_unittest.mm')
-rw-r--r--chromium/ui/views/widget/native_widget_mac_accessibility_unittest.mm296
1 files changed, 168 insertions, 128 deletions
diff --git a/chromium/ui/views/widget/native_widget_mac_accessibility_unittest.mm b/chromium/ui/views/widget/native_widget_mac_accessibility_unittest.mm
index 357897b4fc7..a9debe71bcc 100644
--- a/chromium/ui/views/widget/native_widget_mac_accessibility_unittest.mm
+++ b/chromium/ui/views/widget/native_widget_mac_accessibility_unittest.mm
@@ -24,19 +24,6 @@
#include "ui/views/test/widget_test.h"
#include "ui/views/widget/widget.h"
-// Expose some methods from AXPlatformNodeCocoa for testing purposes only.
-@interface AXPlatformNodeCocoa (Testing)
-- (NSString*)AXRole;
-- (id)AXValue;
-
-// Text attributes.
-- (NSString*)AXSelectedText;
-- (NSValue*)AXSelectedTextRange;
-- (NSNumber*)AXNumberOfCharacters;
-- (NSValue*)AXVisibleCharacterRange;
-- (NSNumber*)AXInsertionPointLineNumber;
-@end
-
namespace views {
namespace {
@@ -92,28 +79,44 @@ class TestLabelButton : public LabelButton {
DISALLOW_COPY_AND_ASSIGN(TestLabelButton);
};
+class TestWidgetDelegate : public test::TestDesktopWidgetDelegate {
+ public:
+ TestWidgetDelegate() = default;
+
+ static constexpr char kAccessibleWindowTitle[] = "My Accessible Window";
+
+ // WidgetDelegate:
+ base::string16 GetAccessibleWindowTitle() const override {
+ return base::ASCIIToUTF16(kAccessibleWindowTitle);
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(TestWidgetDelegate);
+};
+
+constexpr char TestWidgetDelegate::kAccessibleWindowTitle[];
+
class NativeWidgetMacAccessibilityTest : public test::WidgetTest {
public:
NativeWidgetMacAccessibilityTest() {}
void SetUp() override {
test::WidgetTest::SetUp();
- widget_ = CreateTopLevelPlatformWidget();
- widget_->SetBounds(gfx::Rect(50, 50, 100, 100));
+ widget_delegate_.InitWidget(CreateParams(Widget::InitParams::TYPE_WINDOW));
widget()->Show();
}
void TearDown() override {
- widget_->CloseNow();
+ widget()->CloseNow();
test::WidgetTest::TearDown();
}
id A11yElementAtMidpoint() {
// Accessibility hit tests come in Cocoa screen coordinates.
NSPoint midpoint_in_screen_ = gfx::ScreenPointToNSPoint(
- widget_->GetWindowBoundsInScreen().CenterPoint());
+ widget()->GetWindowBoundsInScreen().CenterPoint());
return
- [widget_->GetNativeWindow() accessibilityHitTest:midpoint_in_screen_];
+ [widget()->GetNativeWindow() accessibilityHitTest:midpoint_in_screen_];
}
id AttributeValueAtMidpoint(NSString* attribute) {
@@ -129,11 +132,71 @@ class NativeWidgetMacAccessibilityTest : public test::WidgetTest {
return textfield;
}
- Widget* widget() { return widget_; }
- gfx::Rect GetWidgetBounds() { return widget_->GetClientAreaBoundsInScreen(); }
+ // Shorthand helpers to get a11y properties from A11yElementAtMidpoint().
+ NSString* AXRole() {
+ return AttributeValueAtMidpoint(NSAccessibilityRoleAttribute);
+ }
+ id AXParent() {
+ return AttributeValueAtMidpoint(NSAccessibilityParentAttribute);
+ }
+ id AXValue() {
+ return AttributeValueAtMidpoint(NSAccessibilityValueAttribute);
+ }
+ NSString* AXTitle() {
+ return AttributeValueAtMidpoint(NSAccessibilityTitleAttribute);
+ }
+ NSString* AXDescription() {
+ return AttributeValueAtMidpoint(NSAccessibilityDescriptionAttribute);
+ }
+ NSString* AXSelectedText() {
+ return AttributeValueAtMidpoint(NSAccessibilitySelectedTextAttribute);
+ }
+ NSValue* AXSelectedTextRange() {
+ return AttributeValueAtMidpoint(NSAccessibilitySelectedTextRangeAttribute);
+ }
+ NSNumber* AXNumberOfCharacters() {
+ return AttributeValueAtMidpoint(NSAccessibilityNumberOfCharactersAttribute);
+ }
+ NSValue* AXVisibleCharacterRange() {
+ return AttributeValueAtMidpoint(
+ NSAccessibilityVisibleCharacterRangeAttribute);
+ }
+ NSNumber* AXInsertionPointLineNumber() {
+ return AttributeValueAtMidpoint(
+ NSAccessibilityInsertionPointLineNumberAttribute);
+ }
+ NSNumber* AXLineForIndex(id parameter) {
+ return [A11yElementAtMidpoint()
+ accessibilityAttributeValue:
+ NSAccessibilityLineForIndexParameterizedAttribute
+ forParameter:parameter];
+ }
+ NSValue* AXRangeForLine(id parameter) {
+ return [A11yElementAtMidpoint()
+ accessibilityAttributeValue:
+ NSAccessibilityRangeForLineParameterizedAttribute
+ forParameter:parameter];
+ }
+ NSString* AXStringForRange(id parameter) {
+ return [A11yElementAtMidpoint()
+ accessibilityAttributeValue:
+ NSAccessibilityStringForRangeParameterizedAttribute
+ forParameter:parameter];
+ }
+ NSAttributedString* AXAttributedStringForRange(id parameter) {
+ return [A11yElementAtMidpoint()
+ accessibilityAttributeValue:
+ NSAccessibilityAttributedStringForRangeParameterizedAttribute
+ forParameter:parameter];
+ }
+
+ Widget* widget() { return widget_delegate_.GetWidget(); }
+ gfx::Rect GetWidgetBounds() {
+ return widget()->GetClientAreaBoundsInScreen();
+ }
private:
- Widget* widget_ = nullptr;
+ TestWidgetDelegate widget_delegate_;
DISALLOW_COPY_AND_ASSIGN(NativeWidgetMacAccessibilityTest);
};
@@ -229,8 +292,7 @@ TEST_F(NativeWidgetMacAccessibilityTest, FocusableElementsAreLeafNodes) {
TestLabelButton* button = new TestLabelButton();
button->SetSize(widget()->GetContentsView()->size());
widget()->GetContentsView()->AddChildView(button);
- EXPECT_NSEQ(NSAccessibilityButtonRole,
- AttributeValueAtMidpoint(NSAccessibilityRoleAttribute));
+ EXPECT_NSEQ(NSAccessibilityButtonRole, AXRole());
EXPECT_EQ(
0u,
[[button->GetNativeViewAccessible()
@@ -290,7 +352,7 @@ TEST_F(NativeWidgetMacAccessibilityTest, ParentAttribute) {
// Views with Widget parents will have a NSWindow parent.
EXPECT_NSEQ(
NSAccessibilityWindowRole,
- [AttributeValueAtMidpoint(NSAccessibilityParentAttribute) AXRole]);
+ [AXParent() accessibilityAttributeValue:NSAccessibilityRoleAttribute]);
// Views with non-Widget parents will have the role of the parent view.
widget()->GetContentsView()->RemoveChildView(child);
@@ -299,13 +361,13 @@ TEST_F(NativeWidgetMacAccessibilityTest, ParentAttribute) {
widget()->GetContentsView()->AddChildView(parent);
EXPECT_NSEQ(
NSAccessibilityGroupRole,
- [AttributeValueAtMidpoint(NSAccessibilityParentAttribute) AXRole]);
+ [AXParent() accessibilityAttributeValue:NSAccessibilityRoleAttribute]);
// Test an ignored role parent is skipped in favor of the grandparent.
parent->set_role(ui::AX_ROLE_IGNORED);
EXPECT_NSEQ(
NSAccessibilityWindowRole,
- [AttributeValueAtMidpoint(NSAccessibilityParentAttribute) AXRole]);
+ [AXParent() accessibilityAttributeValue:NSAccessibilityRoleAttribute]);
}
// Test for NSAccessibilityPositionAttribute, including on Widget movement
@@ -337,20 +399,22 @@ TEST_F(NativeWidgetMacAccessibilityTest, HelpAttribute) {
AttributeValueAtMidpoint(NSAccessibilityHelpAttribute));
}
-// Test for NSAccessibilityWindowAttribute and
-// NSAccessibilityTopLevelUIElementAttribute.
-TEST_F(NativeWidgetMacAccessibilityTest, WindowAndTopLevelUIElementAttributes) {
+// Test view properties that should report the native NSWindow, and test
+// specific properties on that NSWindow.
+TEST_F(NativeWidgetMacAccessibilityTest, NativeWindowProperties) {
FlexibleRoleTestView* view = new FlexibleRoleTestView(ui::AX_ROLE_GROUP);
view->SetSize(GetWidgetBounds().size());
widget()->GetContentsView()->AddChildView(view);
// Make sure it's |view| in the hit test by checking its accessibility role.
- EXPECT_EQ(NSAccessibilityGroupRole,
- AttributeValueAtMidpoint(NSAccessibilityRoleAttribute));
- EXPECT_NSEQ(widget()->GetNativeWindow(),
- AttributeValueAtMidpoint(NSAccessibilityWindowAttribute));
+ EXPECT_EQ(NSAccessibilityGroupRole, AXRole());
+
+ NSWindow* window = widget()->GetNativeWindow();
+ EXPECT_NSEQ(window, AttributeValueAtMidpoint(NSAccessibilityWindowAttribute));
+ EXPECT_NSEQ(window, AttributeValueAtMidpoint(
+ NSAccessibilityTopLevelUIElementAttribute));
EXPECT_NSEQ(
- widget()->GetNativeWindow(),
- AttributeValueAtMidpoint(NSAccessibilityTopLevelUIElementAttribute));
+ base::SysUTF8ToNSString(TestWidgetDelegate::kAccessibleWindowTitle),
+ [window accessibilityAttributeValue:NSAccessibilityTitleAttribute]);
}
// Tests for accessibility attributes on a views::Textfield.
@@ -375,16 +439,9 @@ TEST_F(NativeWidgetMacAccessibilityTest, TextfieldGenericAttributes) {
boolValue]);
// NSAccessibilityTitleAttribute.
- EXPECT_NSEQ(kTestTitle,
- AttributeValueAtMidpoint(NSAccessibilityTitleAttribute));
-
- // NSAccessibilityValueAttribute.
- EXPECT_NSEQ(kTestStringValue,
- AttributeValueAtMidpoint(NSAccessibilityValueAttribute));
-
- // NSAccessibilityRoleAttribute.
- EXPECT_NSEQ(NSAccessibilityTextFieldRole,
- AttributeValueAtMidpoint(NSAccessibilityRoleAttribute));
+ EXPECT_NSEQ(NSAccessibilityTextFieldRole, AXRole());
+ EXPECT_NSEQ(kTestTitle, AXTitle());
+ EXPECT_NSEQ(kTestStringValue, AXValue());
// NSAccessibilitySubroleAttribute and
// NSAccessibilityRoleDescriptionAttribute.
@@ -431,10 +488,8 @@ TEST_F(NativeWidgetMacAccessibilityTest, TextfieldEditableAttributes) {
NSAccessibilityInsertionPointLineNumberAttribute) intValue]);
// NSAccessibilityNumberOfCharactersAttribute.
- EXPECT_EQ(
- kTestStringValue.length,
- [AttributeValueAtMidpoint(NSAccessibilityNumberOfCharactersAttribute)
- unsignedIntegerValue]);
+ EXPECT_EQ(kTestStringValue.length,
+ [AXNumberOfCharacters() unsignedIntegerValue]);
// NSAccessibilityPlaceholderAttribute.
EXPECT_NSEQ(
@@ -443,54 +498,41 @@ TEST_F(NativeWidgetMacAccessibilityTest, TextfieldEditableAttributes) {
// NSAccessibilitySelectedTextAttribute and
// NSAccessibilitySelectedTextRangeAttribute.
- EXPECT_NSEQ(@"",
- AttributeValueAtMidpoint(NSAccessibilitySelectedTextAttribute));
+ EXPECT_NSEQ(@"", AXSelectedText());
// The cursor will be at the end of the textfield, so the selection range will
// span 0 characters and be located at the index after the last character.
EXPECT_EQ(gfx::Range(kTestStringValue.length, kTestStringValue.length),
- gfx::Range([AttributeValueAtMidpoint(
- NSAccessibilitySelectedTextRangeAttribute) rangeValue]));
+ gfx::Range([AXSelectedTextRange() rangeValue]));
// Select some text in the middle of the textfield.
const gfx::Range forward_range(2, 6);
const NSRange ns_range = forward_range.ToNSRange();
textfield->SelectRange(forward_range);
- EXPECT_NSEQ([kTestStringValue substringWithRange:ns_range],
- AttributeValueAtMidpoint(NSAccessibilitySelectedTextAttribute));
+ EXPECT_NSEQ([kTestStringValue substringWithRange:ns_range], AXSelectedText());
EXPECT_EQ(textfield->GetSelectedText(),
- base::SysNSStringToUTF16(AttributeValueAtMidpoint(
- NSAccessibilitySelectedTextAttribute)));
- EXPECT_EQ(forward_range,
- gfx::Range([AttributeValueAtMidpoint(
- NSAccessibilitySelectedTextRangeAttribute) rangeValue]));
+ base::SysNSStringToUTF16(AXSelectedText()));
+ EXPECT_EQ(forward_range, gfx::Range([AXSelectedTextRange() rangeValue]));
const gfx::Range reversed_range(6, 2);
textfield->SelectRange(reversed_range);
// NSRange has no direction, so these are unchanged from the forward range.
- EXPECT_NSEQ([kTestStringValue substringWithRange:ns_range],
- AttributeValueAtMidpoint(NSAccessibilitySelectedTextAttribute));
+ EXPECT_NSEQ([kTestStringValue substringWithRange:ns_range], AXSelectedText());
EXPECT_EQ(textfield->GetSelectedText(),
- base::SysNSStringToUTF16(AttributeValueAtMidpoint(
- NSAccessibilitySelectedTextAttribute)));
- EXPECT_EQ(forward_range,
- gfx::Range([AttributeValueAtMidpoint(
- NSAccessibilitySelectedTextRangeAttribute) rangeValue]));
+ base::SysNSStringToUTF16(AXSelectedText()));
+ EXPECT_EQ(forward_range, gfx::Range([AXSelectedTextRange() rangeValue]));
// NSAccessibilityVisibleCharacterRangeAttribute.
EXPECT_EQ(gfx::Range(0, kTestStringValue.length),
- gfx::Range([AttributeValueAtMidpoint(
- NSAccessibilityVisibleCharacterRangeAttribute) rangeValue]));
+ gfx::Range([AXVisibleCharacterRange() rangeValue]));
// Test an RTL string.
textfield->SetText(base::SysNSStringToUTF16(kTestRTLStringValue));
textfield->SelectRange(forward_range);
EXPECT_EQ(textfield->GetSelectedText(),
- base::SysNSStringToUTF16(AttributeValueAtMidpoint(
- NSAccessibilitySelectedTextAttribute)));
+ base::SysNSStringToUTF16(AXSelectedText()));
textfield->SelectRange(reversed_range);
EXPECT_EQ(textfield->GetSelectedText(),
- base::SysNSStringToUTF16(AttributeValueAtMidpoint(
- NSAccessibilitySelectedTextAttribute)));
+ base::SysNSStringToUTF16(AXSelectedText()));
}
// Test writing accessibility attributes via an accessibility client for normal
@@ -503,8 +545,7 @@ TEST_F(NativeWidgetMacAccessibilityTest, ViewWritableAttributes) {
// Make sure the accessibility object tested is the correct one.
id ax_node = A11yElementAtMidpoint();
EXPECT_TRUE(ax_node);
- EXPECT_NSEQ(NSAccessibilityGroupRole,
- AttributeValueAtMidpoint(NSAccessibilityRoleAttribute));
+ EXPECT_NSEQ(NSAccessibilityGroupRole, AXRole());
// Make sure |view| is focusable, then focus/unfocus it.
view->SetFocusBehavior(View::FocusBehavior::ALWAYS);
@@ -530,17 +571,14 @@ TEST_F(NativeWidgetMacAccessibilityTest, TextfieldWritableAttributes) {
EXPECT_TRUE(ax_node);
// Make sure it's the correct accessibility object.
- id value =
- [ax_node accessibilityAttributeValue:NSAccessibilityValueAttribute];
- EXPECT_NSEQ(kTestStringValue, value);
+ EXPECT_NSEQ(kTestStringValue, AXValue());
// Write a new NSAccessibilityValueAttribute.
EXPECT_TRUE(
[ax_node accessibilityIsAttributeSettable:NSAccessibilityValueAttribute]);
[ax_node accessibilitySetValue:kTestPlaceholderText
forAttribute:NSAccessibilityValueAttribute];
- EXPECT_NSEQ(kTestPlaceholderText,
- AttributeValueAtMidpoint(NSAccessibilityValueAttribute));
+ EXPECT_NSEQ(kTestPlaceholderText, AXValue());
EXPECT_EQ(base::SysNSStringToUTF16(kTestPlaceholderText), textfield->text());
// Test a read-only textfield.
@@ -549,8 +587,7 @@ TEST_F(NativeWidgetMacAccessibilityTest, TextfieldWritableAttributes) {
[ax_node accessibilityIsAttributeSettable:NSAccessibilityValueAttribute]);
[ax_node accessibilitySetValue:kTestStringValue
forAttribute:NSAccessibilityValueAttribute];
- EXPECT_NSEQ(kTestPlaceholderText,
- AttributeValueAtMidpoint(NSAccessibilityValueAttribute));
+ EXPECT_NSEQ(kTestPlaceholderText, AXValue());
EXPECT_EQ(base::SysNSStringToUTF16(kTestPlaceholderText), textfield->text());
textfield->SetReadOnly(false);
@@ -563,8 +600,7 @@ TEST_F(NativeWidgetMacAccessibilityTest, TextfieldWritableAttributes) {
[kTestStringValue stringByAppendingString:kTestPlaceholderText];
[ax_node accessibilitySetValue:kTestStringValue
forAttribute:NSAccessibilitySelectedTextAttribute];
- EXPECT_NSEQ(new_string,
- AttributeValueAtMidpoint(NSAccessibilityValueAttribute));
+ EXPECT_NSEQ(new_string, AXValue());
EXPECT_EQ(base::SysNSStringToUTF16(new_string), textfield->text());
// Replace entire selection.
@@ -572,8 +608,7 @@ TEST_F(NativeWidgetMacAccessibilityTest, TextfieldWritableAttributes) {
textfield->SelectRange(test_range);
[ax_node accessibilitySetValue:kTestStringValue
forAttribute:NSAccessibilitySelectedTextAttribute];
- EXPECT_NSEQ(kTestStringValue,
- AttributeValueAtMidpoint(NSAccessibilityValueAttribute));
+ EXPECT_NSEQ(kTestStringValue, AXValue());
EXPECT_EQ(base::SysNSStringToUTF16(kTestStringValue), textfield->text());
// Make sure the cursor is at the end of the Textfield.
EXPECT_EQ(gfx::Range([kTestStringValue length]),
@@ -590,8 +625,7 @@ TEST_F(NativeWidgetMacAccessibilityTest, TextfieldWritableAttributes) {
textfield->SelectRange(test_range);
[ax_node accessibilitySetValue:base::SysUTF16ToNSString(replacement)
forAttribute:NSAccessibilitySelectedTextAttribute];
- EXPECT_NSEQ(new_string,
- AttributeValueAtMidpoint(NSAccessibilityValueAttribute));
+ EXPECT_NSEQ(new_string, AXValue());
EXPECT_EQ(base::SysNSStringToUTF16(new_string), textfield->text());
// Make sure the cursor is at the end of the replacement.
EXPECT_EQ(gfx::Range(front.length() + replacement.length()),
@@ -645,30 +679,17 @@ TEST_F(NativeWidgetMacAccessibilityTest, TextParameterizedAttributes) {
EXPECT_TRUE([ax_node respondsToSelector:sel]);
}
- NSNumber* line =
- [ax_node accessibilityAttributeValue:
- NSAccessibilityLineForIndexParameterizedAttribute
- forParameter:@5];
+ NSNumber* line = AXLineForIndex(@5);
EXPECT_TRUE(line);
EXPECT_EQ(0, [line intValue]);
EXPECT_NSEQ([NSValue valueWithRange:NSMakeRange(0, kTestStringLength)],
- [ax_node accessibilityAttributeValue:
- NSAccessibilityRangeForLineParameterizedAttribute
- forParameter:line]);
+ AXRangeForLine(line));
// The substring "est st" of kTestStringValue.
NSValue* test_range = [NSValue valueWithRange:NSMakeRange(1, 6)];
- EXPECT_NSEQ(@"est st",
- [ax_node accessibilityAttributeValue:
- NSAccessibilityStringForRangeParameterizedAttribute
- forParameter:test_range]);
- EXPECT_NSEQ(
- @"est st",
- [[ax_node
- accessibilityAttributeValue:
- NSAccessibilityAttributedStringForRangeParameterizedAttribute
- forParameter:test_range] string]);
+ EXPECT_NSEQ(@"est st", AXStringForRange(test_range));
+ EXPECT_NSEQ(@"est st", [AXAttributedStringForRange(test_range) string]);
// Not implemented yet. Update these tests when they are.
EXPECT_NSEQ(nil,
@@ -705,8 +726,7 @@ TEST_F(NativeWidgetMacAccessibilityTest, PressAction) {
view->SetSize(GetWidgetBounds().size());
id ax_node = A11yElementAtMidpoint();
- EXPECT_NSEQ(NSAccessibilityButtonRole,
- AttributeValueAtMidpoint(NSAccessibilityRoleAttribute));
+ EXPECT_NSEQ(NSAccessibilityButtonRole, AXRole());
EXPECT_TRUE([[ax_node accessibilityActionNames]
containsObject:NSAccessibilityPressAction]);
@@ -769,35 +789,35 @@ TEST_F(NativeWidgetMacAccessibilityTest, ProtectedTextfields) {
// Explicit checks done without comparing to NSTextField.
EXPECT_TRUE(
[ax_node accessibilityIsAttributeSettable:NSAccessibilityValueAttribute]);
- EXPECT_NSEQ(NSAccessibilityTextFieldRole, [ax_node AXRole]);
+ EXPECT_NSEQ(NSAccessibilityTextFieldRole, AXRole());
NSString* kShownValue = @"•"
@"••••••••••••••••";
// Sanity check.
EXPECT_EQ(kTestStringLength, static_cast<int>([kShownValue length]));
- EXPECT_NSEQ(kShownValue, [ax_node AXValue]);
+ EXPECT_NSEQ(kShownValue, AXValue());
// Cursor currently at the end of input.
- EXPECT_NSEQ(@"", [ax_node AXSelectedText]);
+ EXPECT_NSEQ(@"", AXSelectedText());
EXPECT_NSEQ([NSValue valueWithRange:NSMakeRange(kTestStringLength, 0)],
- [ax_node AXSelectedTextRange]);
+ AXSelectedTextRange());
- EXPECT_EQ(kTestStringLength, [[ax_node AXNumberOfCharacters] intValue]);
+ EXPECT_EQ(kTestStringLength, [AXNumberOfCharacters() intValue]);
EXPECT_NSEQ(([NSValue valueWithRange:{0, kTestStringLength}]),
- [ax_node AXVisibleCharacterRange]);
- EXPECT_EQ(0, [[ax_node AXInsertionPointLineNumber] intValue]);
+ AXVisibleCharacterRange());
+ EXPECT_EQ(0, [AXInsertionPointLineNumber() intValue]);
// Test replacing text.
textfield->SetText(base::ASCIIToUTF16("123"));
- EXPECT_NSEQ(@"•••", [ax_node AXValue]);
- EXPECT_EQ(3, [[ax_node AXNumberOfCharacters] intValue]);
+ EXPECT_NSEQ(@"•••", AXValue());
+ EXPECT_EQ(3, [AXNumberOfCharacters() intValue]);
textfield->SelectRange(gfx::Range(2, 3)); // Selects "3".
[ax_node accessibilitySetValue:@"ab"
forAttribute:NSAccessibilitySelectedTextAttribute];
EXPECT_EQ(base::ASCIIToUTF16("12ab"), textfield->text());
- EXPECT_NSEQ(@"••••", [ax_node AXValue]);
- EXPECT_EQ(4, [[ax_node AXNumberOfCharacters] intValue]);
+ EXPECT_NSEQ(@"••••", AXValue());
+ EXPECT_EQ(4, [AXNumberOfCharacters() intValue]);
}
// Test text-specific attributes of Labels.
@@ -811,20 +831,40 @@ TEST_F(NativeWidgetMacAccessibilityTest, Label) {
id ax_node = A11yElementAtMidpoint();
EXPECT_TRUE(ax_node);
- EXPECT_NSEQ(NSAccessibilityStaticTextRole, [ax_node AXRole]);
- EXPECT_NSEQ(kTestStringValue, [ax_node AXValue]);
+ EXPECT_NSEQ(NSAccessibilityStaticTextRole, AXRole());
+ EXPECT_NSEQ(kTestStringValue, AXValue());
+
+ // Title and description for StaticTextRole should always be empty.
+ EXPECT_NSEQ(@"", AXTitle());
+
+ // The description is "The purpose of the element, not including the role.".
+ // BrowserAccessibility returns an empty string instead of nil. Either should
+ // be OK.
+ EXPECT_EQ(nil, AXDescription());
// No selection by default. TODO(tapted): Test selection when views::Label
// uses RenderTextHarfBuzz on Mac. See http://crbug.com/454835.
// For now, this tests that the codepaths are valid for views::Label.
- EXPECT_NSEQ(@"", [ax_node AXSelectedText]);
+ EXPECT_NSEQ(@"", AXSelectedText());
EXPECT_NSEQ([NSValue valueWithRange:NSMakeRange(0, 0)],
- [ax_node AXSelectedTextRange]);
+ AXSelectedTextRange());
- EXPECT_EQ(kTestStringLength, [[ax_node AXNumberOfCharacters] intValue]);
+ EXPECT_EQ(kTestStringLength, [AXNumberOfCharacters() intValue]);
EXPECT_NSEQ(([NSValue valueWithRange:{0, kTestStringLength}]),
- [ax_node AXVisibleCharacterRange]);
- EXPECT_EQ(0, [[ax_node AXInsertionPointLineNumber] intValue]);
+ AXVisibleCharacterRange());
+ EXPECT_EQ(0, [AXInsertionPointLineNumber() intValue]);
+
+ // Test parameterized attributes for Static Text.
+ NSNumber* line = AXLineForIndex(@5);
+ EXPECT_TRUE(line);
+ EXPECT_EQ(0, [line intValue]);
+ EXPECT_NSEQ([NSValue valueWithRange:NSMakeRange(0, kTestStringLength)],
+ AXRangeForLine(line));
+ NSValue* test_range = [NSValue valueWithRange:NSMakeRange(1, 6)];
+ EXPECT_NSEQ(@"est st", AXStringForRange(test_range));
+ EXPECT_NSEQ(@"est st", [AXAttributedStringForRange(test_range) string]);
+
+ // TODO(tapted): Add a test for multiline Labels (currently not supported).
}
class TestComboboxModel : public ui::ComboboxModel {
@@ -851,12 +891,12 @@ TEST_F(NativeWidgetMacAccessibilityTest, Combobox) {
id ax_node = A11yElementAtMidpoint();
EXPECT_TRUE(ax_node);
- EXPECT_NSEQ(NSAccessibilityPopUpButtonRole, [ax_node AXRole]);
+ EXPECT_NSEQ(NSAccessibilityPopUpButtonRole, AXRole());
// The initial value should be the first item in the menu.
- EXPECT_NSEQ(kTestStringValue, [ax_node AXValue]);
+ EXPECT_NSEQ(kTestStringValue, AXValue());
combobox->SetSelectedIndex(1);
- EXPECT_NSEQ(@"Second Item", [ax_node AXValue]);
+ EXPECT_NSEQ(@"Second Item", AXValue());
// Expect to see both a press action and a show menu action. This matches
// Cocoa behavior.