Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/jdk.accessibility/windows/native/libwindowsaccessbridge/WinAccessBridge.h
40957 views
1
/*
2
* Copyright (c) 2005, 2020, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation. Oracle designates this
8
* particular file as subject to the "Classpath" exception as provided
9
* by Oracle in the LICENSE file that accompanied this code.
10
*
11
* This code is distributed in the hope that it will be useful, but WITHOUT
12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
* version 2 for more details (a copy is included in the LICENSE file that
15
* accompanied this code).
16
*
17
* You should have received a copy of the GNU General Public License version
18
* 2 along with this work; if not, write to the Free Software Foundation,
19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
*
21
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22
* or visit www.oracle.com if you need additional information or have any
23
* questions.
24
*/
25
26
/*
27
* A DLL which is loaded by Windows executables to handle communication
28
* between Java VMs purposes of Accessbility.
29
*/
30
31
#ifndef __WinAccessBridge_H__
32
#define __WinAccessBridge_H__
33
34
#include <windows.h>
35
#include "AccessBridgePackages.h"
36
#include "AccessBridgeEventHandler.h"
37
#include "AccessBridgeJavaVMInstance.h"
38
#include "AccessBridgeMessageQueue.h"
39
40
41
extern "C" {
42
BOOL WINAPI DllMain(HINSTANCE hinstDll, DWORD fdwReason,
43
LPVOID lpvReserved);
44
void AppendToCallOutput(char *s);
45
BOOL CALLBACK AccessBridgeDialogProc(HWND hDlg, UINT message,
46
WPARAM wParam, LPARAM lParam);
47
HWND getTopLevelHWND(HWND descendent);
48
}
49
50
/**
51
* The WinAccessBridge class. The core of the Windows AT AccessBridge dll
52
*/
53
class WinAccessBridge {
54
HINSTANCE windowsInstance;
55
HWND dialogWindow;
56
AccessBridgeJavaVMInstance *javaVMs;
57
AccessBridgeEventHandler *eventHandler;
58
AccessBridgeMessageQueue *messageQueue;
59
60
public:
61
WinAccessBridge(HINSTANCE hInstance);
62
~WinAccessBridge();
63
BOOL initWindow();
64
65
HWND showWinAccessBridgeGUI(int showCommand);
66
67
// IPC with the Java AccessBridge DLL
68
LRESULT rendezvousWithNewJavaDLL(HWND JavaBridgeDLLwindow, long vmID);
69
70
void sendPackage(char *buffer, long bufsize, HWND destWindow);
71
BOOL sendMemoryPackage(char *buffer, long bufsize, HWND destWindow);
72
BOOL queuePackage(char *buffer, long bufsize);
73
BOOL receiveAQueuedPackage();
74
void preProcessPackage(char *buffer, long bufsize);
75
void processPackage(char *buffer, long bufsize);
76
void JavaVMDestroyed(HWND VMBridgeDLLWindow);
77
78
// Java VM object memory management
79
void releaseJavaObject(long vmID, JOBJECT64 object);
80
81
// Version info
82
BOOL getVersionInfo(long vmID, AccessBridgeVersionInfo *info);
83
84
// HWND management methods
85
HWND getNextJavaWindow(HWND previous);
86
BOOL isJavaWindow(HWND window);
87
BOOL getAccessibleContextFromHWND(HWND window, long *vmID, JOBJECT64 *AccessibleContext);
88
HWND getHWNDFromAccessibleContext(long vmID, JOBJECT64 accessibleContext);
89
90
/* Additional utility methods */
91
BOOL isSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2);
92
93
BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext, const wchar_t *text);
94
95
AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext,
96
const wchar_t *role);
97
98
AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext);
99
100
AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext,
101
const wchar_t *role);
102
103
int getObjectDepth (const long vmID, const AccessibleContext accessibleContext);
104
105
AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext);
106
107
108
// Accessible Context methods
109
BOOL getAccessibleContextAt(long vmID, JOBJECT64 AccessibleContextParent,
110
jint x, jint y, JOBJECT64 *AccessibleContext);
111
BOOL getAccessibleContextWithFocus(HWND window, long *vmID, JOBJECT64 *AccessibleContext);
112
BOOL getAccessibleContextInfo(long vmID, JOBJECT64 AccessibleContext, AccessibleContextInfo *info);
113
JOBJECT64 getAccessibleChildFromContext(long vmID, JOBJECT64 AccessibleContext, jint childIndex);
114
JOBJECT64 getAccessibleParentFromContext(long vmID, JOBJECT64 AccessibleContext);
115
116
/* begin AccessibleTable methods */
117
BOOL getAccessibleTableInfo(long vmID, JOBJECT64 acParent, AccessibleTableInfo *tableInfo);
118
BOOL getAccessibleTableCellInfo(long vmID, JOBJECT64 accessibleTable, jint row, jint column,
119
AccessibleTableCellInfo *tableCellInfo);
120
121
BOOL getAccessibleTableRowHeader(long vmID, JOBJECT64 acParent, AccessibleTableInfo *tableInfo);
122
BOOL getAccessibleTableColumnHeader(long vmID, JOBJECT64 acParent, AccessibleTableInfo *tableInfo);
123
124
JOBJECT64 getAccessibleTableRowDescription(long vmID, JOBJECT64 acParent, jint row);
125
JOBJECT64 getAccessibleTableColumnDescription(long vmID, JOBJECT64 acParent, jint column);
126
127
jint getAccessibleTableRowSelectionCount(long vmID, JOBJECT64 accessibleTable);
128
BOOL isAccessibleTableRowSelected(long vmID, JOBJECT64 accessibleTable, jint row);
129
BOOL getAccessibleTableRowSelections(long vmID, JOBJECT64 accessibleTable, jint count,
130
jint *selections);
131
132
jint getAccessibleTableColumnSelectionCount(long vmID, JOBJECT64 accessibleTable);
133
BOOL isAccessibleTableColumnSelected(long vmID, JOBJECT64 accessibleTable, jint column);
134
BOOL getAccessibleTableColumnSelections(long vmID, JOBJECT64 accessibleTable, jint count,
135
jint *selections);
136
137
jint getAccessibleTableRow(long vmID, JOBJECT64 accessibleTable, jint index);
138
jint getAccessibleTableColumn(long vmID, JOBJECT64 accessibleTable, jint index);
139
jint getAccessibleTableIndex(long vmID, JOBJECT64 accessibleTable, jint row, jint column);
140
141
/* end AccessibleTable methods */
142
143
// --------- AccessibleRelationSet methods
144
BOOL getAccessibleRelationSet(long vmID, JOBJECT64 accessibleContext, AccessibleRelationSetInfo *relationSet);
145
146
// --------- AccessibleHypertext methods
147
BOOL getAccessibleHypertext(long vmID, JOBJECT64 accessibleContext, AccessibleHypertextInfo *hypertextInfo);
148
BOOL activateAccessibleHyperlink(long vmID, JOBJECT64 accessibleContext, JOBJECT64 accessibleHyperlink);
149
150
jint getAccessibleHyperlinkCount(const long vmID,
151
const AccessibleContext accessibleContext);
152
153
BOOL getAccessibleHypertextExt(const long vmID,
154
const AccessibleContext accessibleContext,
155
const jint nStartIndex,
156
/* OUT */ AccessibleHypertextInfo *hypertextInfo);
157
158
jint getAccessibleHypertextLinkIndex(const long vmID,
159
const AccessibleHypertext hypertext,
160
const jint nIndex);
161
162
BOOL getAccessibleHyperlink(const long vmID,
163
const AccessibleHypertext hypertext,
164
const jint nIndex,
165
/* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo);
166
167
168
/* Accessible KeyBindings, Icons and Actions */
169
BOOL getAccessibleKeyBindings(long vmID, JOBJECT64 accessibleContext,
170
AccessibleKeyBindings *keyBindings);
171
172
BOOL getAccessibleIcons(long vmID, JOBJECT64 accessibleContext,
173
AccessibleIcons *icons);
174
175
BOOL getAccessibleActions(long vmID, JOBJECT64 accessibleContext,
176
AccessibleActions *actions);
177
178
BOOL doAccessibleActions(long vmID, JOBJECT64 accessibleContext,
179
AccessibleActionsToDo *actionsToDo, jint *failure);
180
181
182
// Accessible Text methods
183
BOOL getAccessibleTextInfo(long vmID, JOBJECT64 AccessibleContext, AccessibleTextInfo *textInfo, jint x, jint y);
184
BOOL getAccessibleTextItems(long vmID, JOBJECT64 AccessibleContext, AccessibleTextItemsInfo *textItems, jint index);
185
BOOL getAccessibleTextSelectionInfo(long vmID, JOBJECT64 AccessibleContext, AccessibleTextSelectionInfo *selectionInfo);
186
BOOL getAccessibleTextAttributes(long vmID, JOBJECT64 AccessibleContext, jint index, AccessibleTextAttributesInfo *attributes);
187
BOOL getAccessibleTextRect(long vmID, JOBJECT64 AccessibleContext, AccessibleTextRectInfo *rectInfo, jint index);
188
BOOL getAccessibleTextLineBounds(long vmID, JOBJECT64 AccessibleContext, jint index, jint *startIndex, jint *endIndex);
189
BOOL getAccessibleTextRange(long vmID, JOBJECT64 AccessibleContext, jint start, jint end, wchar_t *text, short len);
190
191
// Accessible Value methods
192
BOOL getCurrentAccessibleValueFromContext(long vmID, JOBJECT64 AccessibleContext, wchar_t *value, short len);
193
BOOL getMaximumAccessibleValueFromContext(long vmID, JOBJECT64 AccessibleContext, wchar_t *value, short len);
194
BOOL getMinimumAccessibleValueFromContext(long vmID, JOBJECT64 AccessibleContext, wchar_t *value, short len);
195
196
// Accessible Selection methods
197
void addAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext, int i);
198
void clearAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext);
199
JOBJECT64 getAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext, int i);
200
int getAccessibleSelectionCountFromContext(long vmID, JOBJECT64 AccessibleContext);
201
BOOL isAccessibleChildSelectedFromContext(long vmID, JOBJECT64 AccessibleContext, int i);
202
void removeAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext, int i);
203
void selectAllAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext);
204
205
// Event handling methods
206
void addJavaEventNotification(jlong type);
207
void removeJavaEventNotification(jlong type);
208
void addAccessibilityEventNotification(jlong type);
209
void removeAccessibilityEventNotification(jlong type);
210
211
void setPropertyChangeFP(AccessBridge_PropertyChangeFP fp);
212
void setJavaShutdownFP(AccessBridge_JavaShutdownFP fp);
213
void setFocusGainedFP(AccessBridge_FocusGainedFP fp);
214
void setFocusLostFP(AccessBridge_FocusLostFP fp);
215
void setCaretUpdateFP(AccessBridge_CaretUpdateFP fp);
216
void setMouseClickedFP(AccessBridge_MouseClickedFP fp);
217
void setMouseEnteredFP(AccessBridge_MouseEnteredFP fp);
218
void setMouseExitedFP(AccessBridge_MouseExitedFP fp);
219
void setMousePressedFP(AccessBridge_MousePressedFP fp);
220
void setMouseReleasedFP(AccessBridge_MouseReleasedFP fp);
221
void setMenuCanceledFP(AccessBridge_MenuCanceledFP fp);
222
void setMenuDeselectedFP(AccessBridge_MenuDeselectedFP fp);
223
void setMenuSelectedFP(AccessBridge_MenuSelectedFP fp);
224
void setPopupMenuCanceledFP(AccessBridge_PopupMenuCanceledFP fp);
225
void setPopupMenuWillBecomeInvisibleFP(AccessBridge_PopupMenuWillBecomeInvisibleFP fp);
226
void setPopupMenuWillBecomeVisibleFP(AccessBridge_PopupMenuWillBecomeVisibleFP fp);
227
228
void setPropertyNameChangeFP(AccessBridge_PropertyNameChangeFP fp);
229
void setPropertyDescriptionChangeFP(AccessBridge_PropertyDescriptionChangeFP fp);
230
void setPropertyStateChangeFP(AccessBridge_PropertyStateChangeFP fp);
231
void setPropertyValueChangeFP(AccessBridge_PropertyValueChangeFP fp);
232
void setPropertySelectionChangeFP(AccessBridge_PropertySelectionChangeFP fp);
233
void setPropertyTextChangeFP(AccessBridge_PropertyTextChangeFP fp);
234
void setPropertyCaretChangeFP(AccessBridge_PropertyCaretChangeFP fp);
235
void setPropertyVisibleDataChangeFP(AccessBridge_PropertyVisibleDataChangeFP fp);
236
void setPropertyChildChangeFP(AccessBridge_PropertyChildChangeFP fp);
237
void setPropertyActiveDescendentChangeFP(AccessBridge_PropertyActiveDescendentChangeFP fp);
238
239
void setPropertyTableModelChangeFP(AccessBridge_PropertyTableModelChangeFP fp);
240
241
/**
242
* Additional methods for Teton
243
*/
244
245
/**
246
* Gets the AccessibleName for a component based upon the JAWS algorithm. Returns
247
* whether successful.
248
*
249
* Bug ID 4916682 - Implement JAWS AccessibleName policy
250
*/
251
BOOL getVirtualAccessibleName(long vmID, AccessibleContext accessibleContext, wchar_t *name, int len);
252
253
/**
254
* Request focus for a component. Returns whether successful;
255
*
256
* Bug ID 4944757 - requestFocus method needed
257
*/
258
BOOL requestFocus(long vmID, AccessibleContext accessibleContext);
259
260
/**
261
* Selects text between two indices. Selection includes the text at the start index
262
* and the text at the end index. Returns whether successful;
263
*
264
* Bug ID 4944758 - selectTextRange method needed
265
*/
266
BOOL selectTextRange(long vmID, AccessibleContext accessibleContext, int startIndex, int endIndex);
267
268
/**
269
* Get text attributes between two indices. The attribute list includes the text at the
270
* start index and the text at the end index. Returns whether successful;
271
*
272
* Bug ID 4944761 - getTextAttributes between two indices method needed
273
*/
274
BOOL getTextAttributesInRange(long vmID, AccessibleContext accessibleContext, int startIndex, int endIndex,
275
AccessibleTextAttributesInfo *attributes, short *len);
276
277
/**
278
* Gets number of visible children of a component. Returns -1 on error.
279
*
280
* Bug ID 4944762- getVisibleChildren for list-like components needed
281
*/
282
int getVisibleChildrenCount(long vmID, AccessibleContext accessibleContext);
283
284
/**
285
* Gets the visible children of an AccessibleContext. Returns whether successful;
286
*
287
* Bug ID 4944762- getVisibleChildren for list-like components needed
288
*/
289
BOOL getVisibleChildren(long vmID, AccessibleContext accessibleContext, int startIndex,
290
VisibleChildrenInfo *visibleChildrenInfo);
291
292
/**
293
* Set the caret to a text position. Returns whether successful;
294
*
295
* Bug ID 4944770 - setCaretPosition method needed
296
*/
297
BOOL setCaretPosition(long vmID, AccessibleContext accessibleContext, int position);
298
299
300
/**
301
* Gets the text caret bounding rectangle
302
*/
303
BOOL getCaretLocation(long vmID, JOBJECT64 AccessibleContext, AccessibleTextRectInfo *rectInfo, jint index);
304
305
/**
306
* Gets number of events waiting in the message queue
307
*/
308
int getEventsWaiting();
309
310
};
311
312
#endif
313
314