1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
// Copyright 2016 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_ACTION_DATA_H_
#define UI_ACCESSIBILITY_AX_ACTION_DATA_H_
#include <string>
#include <utility>
#include "ui/accessibility/ax_base_export.h"
#include "ui/accessibility/ax_constants.mojom.h"
#include "ui/accessibility/ax_enums.mojom-forward.h"
#include "ui/accessibility/ax_enums.mojom-shared.h"
#include "ui/accessibility/ax_node_data.h"
#include "ui/accessibility/ax_node_id_forward.h"
#include "ui/accessibility/ax_tree_id.h"
#include "ui/gfx/geometry/rect.h"
namespace ui {
// A compact representation of an accessibility action and the arguments
// associated with that action.
struct AX_BASE_EXPORT AXActionData {
AXActionData();
AXActionData(const AXActionData& other);
~AXActionData();
// This is a simple serializable struct. All member variables should be
// public and copyable.
// See the ax::mojom::Action enums in ax_enums.mojom for explanations of which
// parameters apply.
// The action to take.
ax::mojom::Action action;
// The ID of the tree that this action should be performed on.
AXTreeID target_tree_id = AXTreeIDUnknown();
// The source extension id (if any) of this action.
std::string source_extension_id;
// The ID of the node that this action should be performed on.
//
// Note that `target_role` should not be set if `target_node_id` is set, or
// vice versa.
AXNodeID target_node_id = kInvalidAXNodeID;
// Searches for the first node with the given role and performs the action on
// that node.
//
// Note that `target_role` should not be set if `target_node_id` is set, or
// vice versa.
ax::mojom::Role target_role = ax::mojom::Role::kUnknown;
// The request id of this action tracked by the client.
int request_id = -1;
// Use enums from ax::mojom::ActionFlags
int flags = 0;
// For an action that creates a selection, the selection anchor and focus
// (see ax_tree_data.h for definitions).
int anchor_node_id = -1;
// To clear the selection, use an anchor_offset and focus_offset of
// and set the the anchor_node_id and focus_node_id to the target_node_id.
int anchor_offset = ax::mojom::kNoSelectionOffset;
int focus_node_id = -1;
int focus_offset = ax::mojom::kNoSelectionOffset;
// Start index of the text which should be queried for.
int32_t start_index = -1;
// End index of the text which should be queried for.
int32_t end_index = -1;
// For custom action.
AXNodeID custom_action_id = kInvalidAXNodeID;
// The target rect for the action.
gfx::Rect target_rect;
// The target point for the action in screen coordinates.
gfx::Point target_point;
// The new value for a node, for the SET_VALUE action. UTF-8 encoded.
std::string value;
// The row and column to move to. Used with the
// ax::mojom::Action::kScrollToPositionAtRowColumn action.
//
// Supported by Android.
std::pair<int, int> row_column;
// The event to fire in response to a HIT_TEST action.
ax::mojom::Event hit_test_event_to_fire;
// The scroll alignment to use for a SCROLL_TO_MAKE_VISIBLE action. The
// scroll alignment controls where a node is scrolled within the viewport.
ax::mojom::ScrollAlignment horizontal_scroll_alignment;
ax::mojom::ScrollAlignment vertical_scroll_alignment;
// The behavior to use for a SCROLL_TO_MAKE_VISIBLE. This controls whether or
// not the viewport is scrolled when the node is already visible.
ax::mojom::ScrollBehavior scroll_behavior;
// The child tree that needs to be stitched at `target_node_id`. Only used by
// `ax::mojom::Action::kStitchChildTree`.
AXTreeID child_tree_id = AXTreeIDUnknown();
};
} // namespace ui
#endif // UI_ACCESSIBILITY_AX_ACTION_DATA_H_
|