blob: 2dd8e81c10baa4678ff89b3f0157f8bc3523157e [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/accessibility/platform/ax_platform_node_test_helper.h"
#include "ui/accessibility/ax_node_data.h"
namespace ui {
// static
int AXPlatformNodeTestHelper::GetTreeSize(AXPlatformNode* ax_node) {
if (!ax_node)
return 0;
int count = 1;
AXPlatformNodeDelegate* delegate = ax_node->GetDelegate();
for (int i = 0; i < delegate->GetChildCount(); ++i) {
AXPlatformNode* child_node =
AXPlatformNode::FromNativeViewAccessible(delegate->ChildAtIndex(i));
count += GetTreeSize(child_node);
}
return count;
}
// static
AXPlatformNode* AXPlatformNodeTestHelper::FindChildByName(
AXPlatformNode* ax_node,
const std::string& name) {
if (!ax_node)
return nullptr;
AXPlatformNodeDelegate* delegate = ax_node->GetDelegate();
if (delegate->GetData().GetStringAttribute(
ax::mojom::StringAttribute::kName) == name)
return ax_node;
for (int i = 0; i < delegate->GetChildCount(); ++i) {
AXPlatformNode* result_from_child = FindChildByName(
AXPlatformNode::FromNativeViewAccessible(delegate->ChildAtIndex(i)),
name);
if (result_from_child)
return result_from_child;
}
return nullptr;
}
} // namespace ui