summaryrefslogtreecommitdiffstats
path: root/content/browser/accessibility/browser_accessibility_manager.cc
diff options
context:
space:
mode:
authordmazzoni <dmazzoni@chromium.org>2015-01-26 16:34:08 -0800
committerCommit bot <commit-bot@chromium.org>2015-01-27 00:37:59 +0000
commit9b381f3e36dfb3dc1fd93c46573222601b31d3d7 (patch)
treec8dd99bc10c49c1b02773555794ecd50b7a924ab /content/browser/accessibility/browser_accessibility_manager.cc
parent86177e68c78cd0a994a6ad483aa5e6ba8fcfd9a8 (diff)
downloadchromium_src-9b381f3e36dfb3dc1fd93c46573222601b31d3d7.zip
chromium_src-9b381f3e36dfb3dc1fd93c46573222601b31d3d7.tar.gz
chromium_src-9b381f3e36dfb3dc1fd93c46573222601b31d3d7.tar.bz2
Re-land: Send Windows accessibility events based on tree updates.
The idea of this change is to fire Win AX events based on the AX tree changing, rather than based on Blink firing the right event and mapping it to a Win event. Store the Win-specific AX attributes (ia role, ia state, name, value, etc.) in a struct, and when a node is updated, compare the old value of each attribute to the new value and fire an appropriate event for each one (name changed, state changed, etc.). Handle hypertext_ similarly, and properly diff the old and new hypertext in get_oldText and get_newText. This enables all of the "event" tests that were previously added to pass now, and it makes live regions work correctly in NVDA and JAWS. BUG=447962 Committed: https://crrev.com/eb691a960bef3c2aefa38627baa7cbdde480b81e Cr-Commit-Position: refs/heads/master@{#313052} Review URL: https://codereview.chromium.org/848653002 Cr-Commit-Position: refs/heads/master@{#313179}
Diffstat (limited to 'content/browser/accessibility/browser_accessibility_manager.cc')
-rw-r--r--content/browser/accessibility/browser_accessibility_manager.cc17
1 files changed, 14 insertions, 3 deletions
diff --git a/content/browser/accessibility/browser_accessibility_manager.cc b/content/browser/accessibility/browser_accessibility_manager.cc
index 52fcc2b..781eadd 100644
--- a/content/browser/accessibility/browser_accessibility_manager.cc
+++ b/content/browser/accessibility/browser_accessibility_manager.cc
@@ -414,6 +414,9 @@ void BrowserAccessibilityManager::OnNodeWillBeDeleted(ui::AXNode* node) {
}
void BrowserAccessibilityManager::OnSubtreeWillBeDeleted(ui::AXNode* node) {
+ BrowserAccessibility* obj = GetFromAXNode(node);
+ if (obj)
+ obj->OnSubtreeWillBeDeleted();
}
void BrowserAccessibilityManager::OnNodeCreated(ui::AXNode* node) {
@@ -428,9 +431,17 @@ void BrowserAccessibilityManager::OnNodeChanged(ui::AXNode* node) {
}
void BrowserAccessibilityManager::OnAtomicUpdateFinished(
- bool root_changed, const std::vector<ui::AXTreeDelegate::Change>& changes) {
- for (size_t i = 0; i < changes.size(); ++i)
- GetFromAXNode(changes[i].node)->OnUpdateFinished();
+ bool root_changed,
+ const std::vector<ui::AXTreeDelegate::Change>& changes) {
+ for (size_t i = 0; i < changes.size(); ++i) {
+ BrowserAccessibility* obj = GetFromAXNode(changes[i].node);
+ if (!obj)
+ continue;
+
+ obj->OnUpdateFinished();
+ if (changes[i].type == AXTreeDelegate::SUBTREE_CREATED)
+ GetFromAXNode(changes[i].node)->OnSubtreeCreationFinished();
+ }
}
BrowserAccessibilityDelegate*