// 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 "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 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; raw_ptr tree_; raw_ptr node_; }; } // namespace ui #endif // UI_ACCESSIBILITY_TEST_AX_NODE_HELPER_H_