diff options
Diffstat (limited to 'content/browser/accessibility/browser_accessibility_manager.cc')
-rw-r--r-- | content/browser/accessibility/browser_accessibility_manager.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/content/browser/accessibility/browser_accessibility_manager.cc b/content/browser/accessibility/browser_accessibility_manager.cc index c667377..8481b07 100644 --- a/content/browser/accessibility/browser_accessibility_manager.cc +++ b/content/browser/accessibility/browser_accessibility_manager.cc @@ -244,6 +244,40 @@ gfx::Rect BrowserAccessibilityManager::GetViewBounds() { return gfx::Rect(); } +BrowserAccessibility* BrowserAccessibilityManager::NextInTreeOrder( + BrowserAccessibility* node) { + if (!node) + return NULL; + + if (node->PlatformChildCount() > 0) + return node->PlatformGetChild(0); + while (node) { + if (node->parent() && + node->index_in_parent() < + static_cast<int>(node->parent()->PlatformChildCount()) - 1) { + return node->parent()->PlatformGetChild(node->index_in_parent() + 1); + } + node = node->parent(); + } + + return NULL; +} + +BrowserAccessibility* BrowserAccessibilityManager::PreviousInTreeOrder( + BrowserAccessibility* node) { + if (!node) + return NULL; + + if (node->parent() && node->index_in_parent() > 0) { + node = node->parent()->PlatformGetChild(node->index_in_parent() - 1); + while (node->PlatformChildCount() > 0) + node = node->PlatformGetChild(node->PlatformChildCount() - 1); + return node; + } + + return node->parent(); +} + void BrowserAccessibilityManager::UpdateNodesForTesting( const ui::AXNodeData& node1, const ui::AXNodeData& node2 /* = ui::AXNodeData() */, |