Commit 95ce2318 authored by James Cook's avatar James Cook Committed by Commit Bot

chromeos: Fix crash in select-to-speak for keyboard shortcut dialog

The keyboard shortcut dialog is a UI mojo app that runs in a separate
process and has its own AXTree. The code in AutomationManagerAura that
looks up the AXTree ID for a hit test was looking at the wrong
views::View to get the value, due to a confusing condition in how
views::Widget looks up contents views.

Added DCHECKs to make sure this looks up a proper remote AXTree id.

Bug: 872421
Test: Turn on select-to-speak, hit Ctrl-Alt-/, click in dialog
Change-Id: Id9aba72b1aa73b7677e0dc52d1a427c202db0a78
Reviewed-on: https://chromium-review.googlesource.com/1171261Reviewed-by: default avatarKatie Dektar <katie@chromium.org>
Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Commit-Queue: James Cook <jamescook@chromium.org>
Cr-Commit-Position: refs/heads/master@{#582998}
parent c12abd14
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#include "chrome/browser/chromeos/accessibility/ax_host_service.h" #include "chrome/browser/chromeos/accessibility/ax_host_service.h"
#include "components/session_manager/core/session_manager.h" #include "components/session_manager/core/session_manager.h"
#include "ui/base/ui_base_features.h" #include "ui/base/ui_base_features.h"
#include "ui/views/widget/widget_delegate.h"
#endif #endif
using content::BrowserContext; using content::BrowserContext;
...@@ -265,9 +266,12 @@ void AutomationManagerAura::PerformHitTest( ...@@ -265,9 +266,12 @@ void AutomationManagerAura::PerformHitTest(
views::Widget::GetWidgetForNativeWindow(window->parent()); views::Widget::GetWidgetForNativeWindow(window->parent());
CHECK(widget); CHECK(widget);
ui::AXNodeData node_data; ui::AXNodeData node_data;
widget->GetContentsView()->GetAccessibleNodeData(&node_data); widget->widget_delegate()->GetContentsView()->GetAccessibleNodeData(
&node_data);
child_ax_tree_id = child_ax_tree_id =
node_data.GetIntAttribute(ax::mojom::IntAttribute::kChildTreeId); node_data.GetIntAttribute(ax::mojom::IntAttribute::kChildTreeId);
DCHECK_NE(child_ax_tree_id, ui::AXTreeIDRegistry::kNoAXTreeID);
DCHECK_NE(child_ax_tree_id, extensions::api::automation::kDesktopTreeID);
} else { } else {
// For normal windows the (optional) child tree is an aura window property. // For normal windows the (optional) child tree is an aura window property.
child_ax_tree_id = window->GetProperty(ui::kChildAXTreeID); child_ax_tree_id = window->GetProperty(ui::kChildAXTreeID);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment