From be59a35641616a4cf23c4a13fa0632624b021c1b Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Mon, 20 Nov 2017 10:33:36 +0100 Subject: BASELINE: Update Chromium to 62.0.3202.101 Change-Id: I2d5eca8117600df6d331f6166ab24d943d9814ac Reviewed-by: Alexandru Croitor --- .../native_widget_mac_accessibility_unittest.mm | 296 ++++++++++++--------- 1 file changed, 168 insertions(+), 128 deletions(-) (limited to 'chromium/ui/views/widget/native_widget_mac_accessibility_unittest.mm') 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([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. -- cgit v1.2.1