diff options
author | dmazzoni <dmazzoni@chromium.org> | 2015-01-26 16:34:08 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-01-27 00:37:59 +0000 |
commit | 9b381f3e36dfb3dc1fd93c46573222601b31d3d7 (patch) | |
tree | c8dd99bc10c49c1b02773555794ecd50b7a924ab /content/browser/accessibility/browser_accessibility_manager.cc | |
parent | 86177e68c78cd0a994a6ad483aa5e6ba8fcfd9a8 (diff) | |
download | chromium_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.cc | 17 |
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* |