Chromium Code Reviews| Index: content/browser/accessibility/browser_accessibility_manager_win.cc |
| diff --git a/content/browser/accessibility/browser_accessibility_manager_win.cc b/content/browser/accessibility/browser_accessibility_manager_win.cc |
| index 506e20a015a0746479c3c9dc633dee62ecc0141d..75b6f83604c7fccc1e554286332e712151bd2d60 100644 |
| --- a/content/browser/accessibility/browser_accessibility_manager_win.cc |
| +++ b/content/browser/accessibility/browser_accessibility_manager_win.cc |
| @@ -138,6 +138,9 @@ void BrowserAccessibilityManagerWin::UserIsReloading() { |
| void BrowserAccessibilityManagerWin::NotifyAccessibilityEvent( |
| ui::AXEvent event_type, |
| BrowserAccessibility* node) { |
| + if (!node) |
|
dmazzoni
2016/04/26 20:24:24
How about DCHECK(node)? This should never be calle
|
| + return; |
| + |
| BrowserAccessibilityDelegate* root_delegate = GetDelegateFromRootManager(); |
| if (!root_delegate || !root_delegate->AccessibilityGetAcceleratedWidget()) { |
| DLOG(WARNING) << "Not firing AX event because of no root_delegate or hwnd"; |
| @@ -166,9 +169,13 @@ void BrowserAccessibilityManagerWin::NotifyAccessibilityEvent( |
| LONG event_id = EVENT_MIN; |
| switch (event_type) { |
| - case ui::AX_EVENT_ACTIVEDESCENDANTCHANGED: |
| + case ui::AX_EVENT_ACTIVEDESCENDANTCHANGED: { |
| event_id = IA2_EVENT_ACTIVE_DESCENDANT_CHANGED; |
| + BrowserAccessibility* active_descendant = GetActiveDescendantFocus(node); |
| + if (active_descendant) |
| + FireFocusEvent(active_descendant); |
|
dmazzoni
2016/04/26 20:24:24
Same - I think this shouldn't be needed.
|
| break; |
| + } |
| case ui::AX_EVENT_ALERT: |
| event_id = EVENT_SYSTEM_ALERT; |
| break; |
| @@ -218,9 +225,6 @@ void BrowserAccessibilityManagerWin::NotifyAccessibilityEvent( |
| break; |
| } |
| - if (!node) |
| - return; |
| - |
| if (event_id != EVENT_MIN) |
| MaybeCallNotifyWinEvent(event_id, node); |
| @@ -247,6 +251,7 @@ bool BrowserAccessibilityManagerWin::CanFireEvents() { |
| void BrowserAccessibilityManagerWin::FireFocusEvent( |
| BrowserAccessibility* node) { |
| + DCHECK(node); |
| // On Windows, we always fire a FOCUS event on the root of a frame before |
| // firing a focus event within that frame. |
| if (node->manager() != last_focused_manager_ && |