0

M135: [AX Mac] combobox should open on ctrl+opt+space with VO

Do not respond to action related selectors such as
accessibilityPerformDecrement because VO gets confused and fails to
process supported actions.

(cherry picked from commit I931c2934f89698cbae046ee85e09c6cae5838f00)

(cherry picked from commit acd08cbf92)

Bug: 404815011, 403071960
Change-Id: I931c2934f89698cbae046ee85e09c6cae5838f00
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6356669
Commit-Queue: Aaron Leventhal <aleventhal@chromium.org>
Reviewed-by: Aaron Leventhal <aleventhal@chromium.org>
Reviewed-by: Jayson Adams <shrike@chromium.org>
Cr-Original-Commit-Position: refs/heads/main@{#1433617}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6372940
Cr-Commit-Position: refs/branch-heads/7049@{#1263}
Cr-Branched-From: 2dab7846d0951a552bdc4f350dad497f986e6fed-refs/heads/main@{#1427262}
This commit is contained in:
Alexander Surkov
2025-03-24 07:54:04 -07:00
committed by Chromium LUCI CQ
parent 5249caeab0
commit abf2785374
4 changed files with 41 additions and 10 deletions

@ -2,4 +2,4 @@ slider.accessibilityValue=2
slider.accessibilityPerformDecrement=1
AXValueChanged on AXSlider AXValue=1
slider.accessibilityValue=1
text.accessibilityPerformIncrement=0
text.accessibilityPerformIncrement=ERROR:FAILED_TO_PARSE

@ -2,4 +2,4 @@ slider.accessibilityValue=1
slider.accessibilityPerformIncrement=1
AXValueChanged on AXSlider AXValue=2
slider.accessibilityValue=2
text.accessibilityPerformIncrement=0
text.accessibilityPerformIncrement=ERROR:FAILED_TO_PARSE

@ -440,7 +440,10 @@ const ui::CocoaActionList& GetCocoaActionListForTesting() {
- (BOOL)conditionallyRespondsToSelector:(SEL)selector {
static std::unordered_set<SEL> methodSelectorsForActions = {
@selector(accessibilityPerformPress),
};
@selector(accessibilityPerformDecrement),
@selector(accessibilityPerformIncrement),
@selector(accessibilityPerformShowMenu),
@selector(accessibilityPerformConfirm)};
static std::unordered_set<SEL> methodSelectorsForParameterizedAttributes = {
@selector(accessibilityCellForColumn:row:),
@ -1385,6 +1388,7 @@ const ui::CocoaActionList& GetCocoaActionListForTesting() {
containsObject:evaluatedObject];
}]];
}
return actions;
}

@ -432,17 +432,44 @@ TEST_P(AXPlatformNodeCocoaTest, TestRespondsToSelector) {
}
// respondsToSelector for `accessibilityPerformPress`.
TEST_P(AXPlatformNodeCocoaTest, RespondsToSelectorAccessibilityPerformPress) {
TEST_P(AXPlatformNodeCocoaTest, RespondsToSelectorAccessibilityPerform) {
Init(std::string(R"HTML(
++1 kRootWebArea
++++2 kButton
++++3 kGenericContainer
++++2 kGenericContainer
++++3 kButton
++++4 kSlider
++++5 kComboBoxSelect
)HTML"));
EXPECT_TRUE([GetCocoaNode(2)
respondsToSelector:@selector(accessibilityPerformPress)]);
EXPECT_FALSE([GetCocoaNode(3)
respondsToSelector:@selector(accessibilityPerformPress)]);
auto generic_node = GetCocoaNode(2);
auto button = GetCocoaNode(3);
auto slider = GetCocoaNode(4);
auto combobox = GetCocoaNode(5);
// accessibilityPerformPress
EXPECT_TRUE([button respondsToSelector:@selector(accessibilityPerformPress)]);
EXPECT_FALSE(
[generic_node respondsToSelector:@selector(accessibilityPerformPress)]);
// accessibilityPerformDecrement/accessibilityPerformIncrement
EXPECT_TRUE(
[slider respondsToSelector:@selector(accessibilityPerformDecrement)]);
EXPECT_TRUE(
[slider respondsToSelector:@selector(accessibilityPerformIncrement)]);
EXPECT_FALSE(
[button respondsToSelector:@selector(accessibilityPerformDecrement)]);
EXPECT_FALSE(
[button respondsToSelector:@selector(accessibilityPerformIncrement)]);
// accessibilityPerformShowMenu
EXPECT_TRUE(
[combobox respondsToSelector:@selector(accessibilityPerformShowMenu)]);
EXPECT_FALSE([generic_node
respondsToSelector:@selector(accessibilityPerformShowMenu)]);
// accessibilityPerformConfirm
EXPECT_FALSE(
[generic_node respondsToSelector:@selector(accessibilityPerformConfirm)]);
}
// Tests that -addTextAnnotations:to: correctly applies attributes to the