blob: 1a6e51b108d5db5e75843c5d1ece6bcce54300ae [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_ACCESSIBILITY_TEST_AX_NODE_HELPER_H_
#define UI_ACCESSIBILITY_TEST_AX_NODE_HELPER_H_
#include "base/memory/raw_ptr.h"
#include "ui/accessibility/ax_clipping_behavior.h"
#include "ui/accessibility/ax_coordinate_system.h"
#include "ui/accessibility/ax_node.h"
#include "ui/accessibility/ax_offscreen_result.h"
#include "ui/accessibility/ax_tree.h"
namespace ui {
// For testing, a TestAXNodeHelper wraps an AXNode. This is a simple
// version of TestAXNodeWrapper.
class TestAXNodeHelper {
public:
// Create TestAXNodeHelper instances on-demand from an AXTree and AXNode.
static std::unique_ptr<TestAXNodeHelper> Create(AXTree* tree, AXNode* node);
~TestAXNodeHelper();
gfx::Rect GetBoundsRect(const AXCoordinateSystem coordinate_system,
const AXClippingBehavior clipping_behavior,
AXOffscreenResult* offscreen_result) const;
gfx::Rect GetInnerTextRangeBoundsRect(
const int start_offset,
const int end_offset,
const AXCoordinateSystem coordinate_system,
const AXClippingBehavior clipping_behavior,
AXOffscreenResult* offscreen_result) const;
private:
TestAXNodeHelper(AXTree* tree, AXNode* node);
int InternalChildCount() const;
std::unique_ptr<TestAXNodeHelper> InternalGetChild(int index) const;
const AXNodeData& GetData() const;
gfx::RectF GetLocation() const;
gfx::RectF GetInlineTextRect(const int start_offset,
const int end_offset) const;
// Helper for determining if the two rects, including empty rects, intersect
// each other.
bool Intersects(gfx::RectF rect1, gfx::RectF rect2) const;
// Determine the offscreen status of a particular element given its bounds.
AXOffscreenResult DetermineOffscreenResult(gfx::RectF bounds) const;
raw_ptr<AXTree> tree_;
raw_ptr<AXNode> node_;
};
} // namespace ui
#endif // UI_ACCESSIBILITY_TEST_AX_NODE_HELPER_H_