summaryrefslogtreecommitdiffstats
path: root/content/browser/accessibility/browser_accessibility_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser/accessibility/browser_accessibility_manager.cc')
-rw-r--r--content/browser/accessibility/browser_accessibility_manager.cc34
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() */,