1 // Copyright (c) 2012 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.
5 // IPC messages for accessibility.
6 // Multiply-included message file, hence no include guard.
8 #include "base/basictypes.h"
9 #include "content/common/content_export.h"
10 #include "content/common/view_message_enums.h"
11 #include "content/public/common/common_param_traits.h"
12 #include "ipc/ipc_message_macros.h"
13 #include "ipc/ipc_message_utils.h"
14 #include "ipc/ipc_param_traits.h"
15 #include "ipc/param_traits_macros.h"
16 #include "third_party/WebKit/public/web/WebAXEnums.h"
17 #include "ui/accessibility/ax_node_data.h"
18 #include "ui/accessibility/ax_tree_update.h"
20 // Singly-included section for custom types.
21 #ifndef CONTENT_COMMON_ACCESSIBILITY_MESSAGES_H_
22 #define CONTENT_COMMON_ACCESSIBILITY_MESSAGES_H_
24 typedef std::map
<int32
, int> FrameIDMap
;
26 #endif // CONTENT_COMMON_ACCESSIBILITY_MESSAGES_H_
28 #undef IPC_MESSAGE_EXPORT
29 #define IPC_MESSAGE_EXPORT CONTENT_EXPORT
31 #define IPC_MESSAGE_START AccessibilityMsgStart
33 IPC_ENUM_TRAITS_MAX_VALUE(ui::AXEvent
, ui::AX_EVENT_LAST
)
34 IPC_ENUM_TRAITS_MAX_VALUE(ui::AXRole
, ui::AX_ROLE_LAST
)
36 IPC_ENUM_TRAITS_MAX_VALUE(ui::AXBoolAttribute
, ui::AX_BOOL_ATTRIBUTE_LAST
)
37 IPC_ENUM_TRAITS_MAX_VALUE(ui::AXFloatAttribute
, ui::AX_FLOAT_ATTRIBUTE_LAST
)
38 IPC_ENUM_TRAITS_MAX_VALUE(ui::AXIntAttribute
, ui::AX_INT_ATTRIBUTE_LAST
)
39 IPC_ENUM_TRAITS_MAX_VALUE(ui::AXIntListAttribute
,
40 ui::AX_INT_LIST_ATTRIBUTE_LAST
)
41 IPC_ENUM_TRAITS_MAX_VALUE(ui::AXStringAttribute
, ui::AX_STRING_ATTRIBUTE_LAST
)
43 IPC_STRUCT_TRAITS_BEGIN(ui::AXNodeData
)
44 IPC_STRUCT_TRAITS_MEMBER(id
)
45 IPC_STRUCT_TRAITS_MEMBER(role
)
46 IPC_STRUCT_TRAITS_MEMBER(state
)
47 IPC_STRUCT_TRAITS_MEMBER(location
)
48 IPC_STRUCT_TRAITS_MEMBER(string_attributes
)
49 IPC_STRUCT_TRAITS_MEMBER(int_attributes
)
50 IPC_STRUCT_TRAITS_MEMBER(float_attributes
)
51 IPC_STRUCT_TRAITS_MEMBER(bool_attributes
)
52 IPC_STRUCT_TRAITS_MEMBER(intlist_attributes
)
53 IPC_STRUCT_TRAITS_MEMBER(html_attributes
)
54 IPC_STRUCT_TRAITS_MEMBER(child_ids
)
55 IPC_STRUCT_TRAITS_END()
57 IPC_STRUCT_TRAITS_BEGIN(ui::AXTreeUpdate
)
58 IPC_STRUCT_TRAITS_MEMBER(node_id_to_clear
)
59 IPC_STRUCT_TRAITS_MEMBER(nodes
)
60 IPC_STRUCT_TRAITS_END()
62 IPC_STRUCT_BEGIN(AccessibilityHostMsg_EventParams
)
64 IPC_STRUCT_MEMBER(ui::AXTreeUpdate
, update
)
66 // Mapping from node id to routing id of its child frame - either the
67 // routing id of a RenderFrame or a RenderFrameProxy for an out-of-process
69 IPC_STRUCT_MEMBER(FrameIDMap
, node_to_frame_routing_id_map
)
71 // Mapping from node id to the browser plugin instance id of a child
73 IPC_STRUCT_MEMBER(FrameIDMap
, node_to_browser_plugin_instance_id_map
)
76 IPC_STRUCT_MEMBER(ui::AXEvent
, event_type
)
78 // ID of the node that the event applies to.
79 IPC_STRUCT_MEMBER(int, id
)
82 IPC_STRUCT_BEGIN(AccessibilityHostMsg_LocationChangeParams
)
83 // ID of the object whose location is changing.
84 IPC_STRUCT_MEMBER(int, id
)
86 // The object's new location, in frame-relative coordinates (same
87 // as the coordinates in AccessibilityNodeData).
88 IPC_STRUCT_MEMBER(gfx::Rect
, new_location
)
91 // Messages sent from the browser to the renderer.
93 // Relay a request from assistive technology to set focus to a given node.
94 IPC_MESSAGE_ROUTED1(AccessibilityMsg_SetFocus
,
97 // Relay a request from assistive technology to perform the default action
99 IPC_MESSAGE_ROUTED1(AccessibilityMsg_DoDefaultAction
,
102 // Relay a request from assistive technology to make a given object
103 // visible by scrolling as many scrollable containers as possible.
104 // In addition, if it's not possible to make the entire object visible,
105 // scroll so that the |subfocus| rect is visible at least. The subfocus
106 // rect is in local coordinates of the object itself.
107 IPC_MESSAGE_ROUTED2(AccessibilityMsg_ScrollToMakeVisible
,
109 gfx::Rect
/* subfocus */)
111 // Relay a request from assistive technology to move a given object
112 // to a specific location, in the WebContents area coordinate space, i.e.
113 // (0, 0) is the top-left corner of the WebContents.
114 IPC_MESSAGE_ROUTED2(AccessibilityMsg_ScrollToPoint
,
116 gfx::Point
/* new location */)
118 // Relay a request from assistive technology to set the cursor or
119 // selection within an editable text element.
120 IPC_MESSAGE_ROUTED3(AccessibilityMsg_SetTextSelection
,
122 int /* New start offset */,
123 int /* New end offset */)
125 // Relay a request from assistive technology to set the value of an
126 // editable text element.
127 IPC_MESSAGE_ROUTED2(AccessibilityMsg_SetValue
,
129 base::string16
/* Value */)
131 // Determine the accessibility object under a given point and reply with
132 // a AccessibilityHostMsg_HitTestResult with the same id.
133 IPC_MESSAGE_ROUTED1(AccessibilityMsg_HitTest
,
134 gfx::Point
/* location to test */)
136 // Tells the render view that a AccessibilityHostMsg_Events
137 // message was processed and it can send addition events.
138 IPC_MESSAGE_ROUTED0(AccessibilityMsg_Events_ACK
)
140 // Tell the renderer to reset and send a new accessibility tree from
141 // scratch because the browser is out of sync. It passes a sequential
142 // reset token. This should be rare, and if we need reset the same renderer
143 // too many times we just kill it. After sending a reset, the browser ignores
144 // incoming accessibility IPCs until it receives one with the matching reset
145 // token. Conversely, it ignores IPCs with a reset token if it was not
146 // expecting a reset.
147 IPC_MESSAGE_ROUTED1(AccessibilityMsg_Reset
,
148 int /* reset token */)
150 // Kill the renderer because we got a fatal error in the accessibility tree
151 // and we've already reset too many times.
152 IPC_MESSAGE_ROUTED0(AccessibilityMsg_FatalError
)
154 // Messages sent from the renderer to the browser.
156 // Sent to notify the browser about renderer accessibility events.
157 // The browser responds with a AccessibilityMsg_Events_ACK.
158 // The second parameter, reset_token, is set if this IPC was sent in response
159 // to a reset request from the browser. When the browser requests a reset,
160 // it ignores incoming IPCs until it sees one with the correct reset token.
161 // Any other time, it ignores IPCs with a reset token.
163 AccessibilityHostMsg_Events
,
164 std::vector
<AccessibilityHostMsg_EventParams
> /* events */,
165 int /* reset_token */)
167 // Sent to update the browser of the location of accessibility objects.
169 AccessibilityHostMsg_LocationChanges
,
170 std::vector
<AccessibilityHostMsg_LocationChangeParams
>)