| // Copyright 2022 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_AX_SELECTION_H_ |
| #define UI_ACCESSIBILITY_AX_SELECTION_H_ |
| |
| // #include "ui/accessibility/ax_enums.mojom-forward.h" |
| #include "ui/accessibility/ax_export.h" |
| #include "ui/accessibility/ax_node_id_forward.h" |
| #include "ui/accessibility/ax_tree_id.h" |
| |
| namespace ui { |
| |
| class AXTree; |
| |
| // A data structure that can store either the selected range of nodes in the |
| // accessibility tree, or the location of the caret in the case of a |
| // "collapsed" selection. |
| class AX_EXPORT AXSelection final { |
| public: |
| AXSelection(); |
| explicit AXSelection(const AXTree&); |
| AXSelection(const AXSelection&); |
| ~AXSelection(); |
| |
| // Returns true if this instance represents the position of the caret. |
| constexpr bool IsCollapsed() const { |
| return focus_object_id != kInvalidAXNodeID && |
| anchor_object_id == focus_object_id && anchor_offset == focus_offset; |
| } |
| |
| bool is_backward = false; |
| AXNodeID anchor_object_id = kInvalidAXNodeID; |
| int anchor_offset = -1; |
| ax::mojom::TextAffinity anchor_affinity; |
| AXNodeID focus_object_id = kInvalidAXNodeID; |
| int focus_offset = -1; |
| ax::mojom::TextAffinity focus_affinity; |
| |
| AXSelection& ToUnignoredSelection(); |
| |
| private: |
| AXTreeID tree_id_; |
| }; |
| |
| } // namespace ui |
| |
| #endif // UI_ACCESSIBILITY_AX_SELECTION_H_ |