blob: 360e58f12fec7f06c4e0be13fe2f5ee1ef7a1649 [file] [log] [blame]
// Copyright 2020 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.
#ifndef UI_ACCESSIBILITY_TEST_AX_NODE_HELPER_H_
#define UI_ACCESSIBILITY_TEST_AX_NODE_HELPER_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 TestAXNodeHelper* GetOrCreate(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;
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;
AXTree* tree_;
AXNode* node_;
};
} // namespace ui
#endif // UI_ACCESSIBILITY_TEST_AX_NODE_HELPER_H_