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

Unified Diff: ui/views/widget/native_widget_mac_accessibility_unittest.mm

Issue 2671563002: MacViews: Implement NSAccessibilityPressAction for Views with clickable roles. (Closed)
Patch Set: Add TODO for "feed" ARIA role. 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
« no previous file with comments | « ui/accessibility/platform/ax_platform_node_mac.mm ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 3d641d190f9eab41fa0d4a97d726766736902263..f7d37366523cccdd5c81caa5954be200be8dc82c 100644
--- a/ui/views/widget/native_widget_mac_accessibility_unittest.mm
+++ b/ui/views/widget/native_widget_mac_accessibility_unittest.mm
@@ -39,19 +39,27 @@ class FlexibleRoleTestView : public View {
// Add a child view and resize to fit the child.
void FitBoundsToNewChild(View* view) {
- View::AddChildView(view);
+ AddChildView(view);
// Fit the parent widget to the size of the child for accurate hit tests.
SetBoundsRect(view->bounds());
}
+ bool mouse_was_pressed() const { return mouse_was_pressed_; }
+
// View:
void GetAccessibleNodeData(ui::AXNodeData* node_data) override {
View::GetAccessibleNodeData(node_data);
node_data->role = role_;
}
+ bool OnMousePressed(const ui::MouseEvent& event) override {
+ mouse_was_pressed_ = true;
+ return false;
+ }
+
private:
ui::AXRole role_;
+ bool mouse_was_pressed_ = false;
DISALLOW_COPY_AND_ASSIGN(FlexibleRoleTestView);
};
@@ -72,14 +80,16 @@ class NativeWidgetMacAccessibilityTest : public test::WidgetTest {
test::WidgetTest::TearDown();
}
- id AttributeValueAtMidpoint(NSString* attribute) {
+ id A11yElementAtMidpoint() {
// Accessibility hit tests come in Cocoa screen coordinates.
NSPoint midpoint_in_screen_ = gfx::ScreenPointToNSPoint(
widget_->GetWindowBoundsInScreen().CenterPoint());
- id hit =
+ return
[widget_->GetNativeWindow() accessibilityHitTest:midpoint_in_screen_];
- id value = [hit accessibilityAttributeValue:attribute];
- return value;
+ }
+
+ id AttributeValueAtMidpoint(NSString* attribute) {
+ return [A11yElementAtMidpoint() accessibilityAttributeValue:attribute];
}
Textfield* AddChildTextfield(const gfx::Size& size) {
@@ -311,14 +321,11 @@ TEST_F(NativeWidgetMacAccessibilityTest, ViewWritableAttributes) {
view->SetSize(GetWidgetBounds().size());
widget()->GetContentsView()->AddChildView(view);
- // Get the FlexibleRoleTestView accessibility object.
- NSPoint midpoint = gfx::ScreenPointToNSPoint(GetWidgetBounds().CenterPoint());
- id ax_node = [widget()->GetNativeWindow() accessibilityHitTest:midpoint];
+ // Make sure the accessibility object tested is the correct one.
+ id ax_node = A11yElementAtMidpoint();
EXPECT_TRUE(ax_node);
-
- // Make sure it's the correct accessibility object.
- id value = [ax_node accessibilityAttributeValue:NSAccessibilityRoleAttribute];
- EXPECT_NSEQ(NSAccessibilityGroupRole, value);
+ EXPECT_NSEQ(NSAccessibilityGroupRole,
+ AttributeValueAtMidpoint(NSAccessibilityRoleAttribute));
// Make sure |view| is focusable, then focus/unfocus it.
view->SetFocusBehavior(View::FocusBehavior::ALWAYS);
@@ -413,4 +420,20 @@ TEST_F(NativeWidgetMacAccessibilityTest, TextfieldWritableAttributes) {
textfield->GetSelectedRange());
}
+// Test performing a 'click' on Views with clickable roles work.
+TEST_F(NativeWidgetMacAccessibilityTest, PressAction) {
+ FlexibleRoleTestView* view = new FlexibleRoleTestView(ui::AX_ROLE_BUTTON);
+ widget()->GetContentsView()->AddChildView(view);
+ view->SetSize(GetWidgetBounds().size());
+
+ id ax_node = A11yElementAtMidpoint();
+ EXPECT_NSEQ(NSAccessibilityButtonRole,
+ AttributeValueAtMidpoint(NSAccessibilityRoleAttribute));
+
+ EXPECT_TRUE([[ax_node accessibilityActionNames]
+ containsObject:NSAccessibilityPressAction]);
+ [ax_node accessibilityPerformAction:NSAccessibilityPressAction];
+ EXPECT_TRUE(view->mouse_was_pressed());
+}
+
} // namespace views
« no previous file with comments | « ui/accessibility/platform/ax_platform_node_mac.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698