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

Unified Diff: content/browser/accessibility/browser_accessibility_manager_mac.mm

Issue 1899823002: Uses the activedescendant_changed event received from Blink to fire the right focus event (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed Mac compilation issue. Created 4 years, 8 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
Index: content/browser/accessibility/browser_accessibility_manager_mac.mm
diff --git a/content/browser/accessibility/browser_accessibility_manager_mac.mm b/content/browser/accessibility/browser_accessibility_manager_mac.mm
index 097eb4479097b51c2c9ffa1212571e19b11edb68..d8936615b53d9539492222755adea0d60242aa49 100644
--- a/content/browser/accessibility/browser_accessibility_manager_mac.mm
+++ b/content/browser/accessibility/browser_accessibility_manager_mac.mm
@@ -132,9 +132,13 @@ ui::AXTreeUpdate
BrowserAccessibility* BrowserAccessibilityManagerMac::GetFocus() {
// On Mac, list boxes should always get focus on the whole list, otherwise
// information about the number of selected items will never be reported.
+ // For combo boxes, focus should stay on the combo box so the user will not be
dmazzoni 2016/04/29 20:55:54 Consider doing this only for combo boxes where IsE
+ // taken out of the combo box while typing.
BrowserAccessibility* node = BrowserAccessibilityManager::GetFocus();
- if (node && node->GetRole() == ui::AX_ROLE_LIST_BOX)
+ if (node && (node->GetRole() == ui::AX_ROLE_LIST_BOX ||
+ node->GetRole() == ui::AX_ROLE_COMBO_BOX)) {
return node;
+ }
// For other roles, follow the active descendant.
return GetActiveDescendantFocus(node);
@@ -146,20 +150,6 @@ void BrowserAccessibilityManagerMac::NotifyAccessibilityEvent(
if (!node->IsNative())
return;
- if (event_type == ui::AX_EVENT_FOCUS) {
- BrowserAccessibility* active_descendant = GetActiveDescendantFocus(node);
- if (active_descendant)
- node = active_descendant;
-
- if (node->GetRole() == ui::AX_ROLE_LIST_BOX_OPTION &&
- node->HasState(ui::AX_STATE_SELECTED) &&
- node->GetParent() &&
- node->GetParent()->GetRole() == ui::AX_ROLE_LIST_BOX) {
- node = node->GetParent();
- SetFocus(*node);
- }
- }
-
auto native_node = ToBrowserAccessibilityCocoa(node);
DCHECK(native_node);
@@ -175,7 +165,10 @@ void BrowserAccessibilityManagerMac::NotifyAccessibilityEvent(
// the combo box where the user might be typing.
mac_notification = NSAccessibilitySelectedChildrenChangedNotification;
} else {
- mac_notification = NSAccessibilityFocusedUIElementChangedNotification;
+ // In all other cases we should post
+ // |NSAccessibilityFocusedUIElementChangedNotification|, but this is
+ // handled elsewhere.
+ return;
}
break;
case ui::AX_EVENT_AUTOCORRECTION_OCCURED:

Powered by Google App Engine
This is Rietveld 408576698