blob: 14fc549ad1807744c99d22c8bffa30d6f0c0d43b [file] [log] [blame]
nektar9de71d42016-10-21 21:57:001// Copyright 2016 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef UI_ACCESSIBILITY_AX_NODE_POSITION_H_
6#define UI_ACCESSIBILITY_AX_NODE_POSITION_H_
7
8#include <stdint.h>
9
nektar491c6732016-12-14 00:14:3010#include <vector>
11
12#include "base/strings/string16.h"
nektar9de71d42016-10-21 21:57:0013#include "ui/accessibility/ax_export.h"
14#include "ui/accessibility/ax_node.h"
15#include "ui/accessibility/ax_position.h"
16#include "ui/accessibility/ax_tree.h"
17
18namespace ui {
19
20class AX_EXPORT AXNodePosition : public AXPosition<AXNodePosition, AXNode> {
21 public:
22 AXNodePosition();
23 ~AXNodePosition() override;
24
nektar491c6732016-12-14 00:14:3025 AXPositionInstance Clone() const override;
26
27 base::string16 GetInnerText() const override;
28
nektar9de71d42016-10-21 21:57:0029 static void SetTreeForTesting(AXTree* tree) { tree_ = tree; }
30
31 protected:
nektar491c6732016-12-14 00:14:3032 AXNodePosition(const AXNodePosition& other) = default;
nektar9de71d42016-10-21 21:57:0033 void AnchorChild(int child_index,
34 int* tree_id,
35 int32_t* child_id) const override;
36 int AnchorChildCount() const override;
37 int AnchorIndexInParent() const override;
38 void AnchorParent(int* tree_id, int32_t* parent_id) const override;
39 AXNode* GetNodeInTree(int tree_id, int32_t node_id) const override;
40 int MaxTextOffset() const override;
nektar491c6732016-12-14 00:14:3041 bool IsInLineBreak() const override;
42 std::vector<int32_t> GetWordStartOffsets() const override;
43 std::vector<int32_t> GetWordEndOffsets() const override;
44 int32_t GetNextOnLineID(int32_t node_id) const override;
45 int32_t GetPreviousOnLineID(int32_t node_id) const override;
nektar9de71d42016-10-21 21:57:0046
47 private:
48 static AXTree* tree_;
49};
50
51} // namespace ui
52
53#endif // UI_ACCESSIBILITY_AX_NODE_POSITION_H_