Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/jdk.accessibility/windows/native/libjavaaccessbridge/AccessBridgeJavaEntryPoints.h
40957 views
1
/*
2
* Copyright (c) 2005, 2015, 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 class to manage JNI calls into AccessBridge.java
28
*/
29
30
#include "AccessBridgePackages.h"
31
32
#include <windows.h>
33
#include <jni.h>
34
35
#ifndef __AccessBridgeJavaEntryPoints_H__
36
#define __AccessBridgeJavaEntryPoints_H__
37
38
class AccessBridgeJavaEntryPoints {
39
JNIEnv *jniEnv;
40
41
jobject accessBridgeObject;
42
43
jclass bridgeClass;
44
jclass eventHandlerClass;
45
46
jmethodID decrementReferenceMethod;
47
jmethodID getJavaVersionPropertyMethod;
48
49
jmethodID isJavaWindowMethod;
50
jmethodID isSameObjectMethod;
51
jmethodID getAccessibleContextFromHWNDMethod;
52
jmethodID getHWNDFromAccessibleContextMethod;
53
54
jmethodID getAccessibleContextAtMethod;
55
jmethodID getAccessibleContextWithFocusMethod;
56
57
jmethodID getAccessibleNameFromContextMethod;
58
jmethodID getAccessibleDescriptionFromContextMethod;
59
jmethodID getAccessibleRoleStringFromContextMethod;
60
jmethodID getAccessibleRoleStringFromContext_en_USMethod;
61
jmethodID getAccessibleStatesStringFromContextMethod;
62
jmethodID getAccessibleStatesStringFromContext_en_USMethod;
63
jmethodID getAccessibleParentFromContextMethod;
64
jmethodID getAccessibleIndexInParentFromContextMethod;
65
jmethodID getAccessibleChildrenCountFromContextMethod;
66
jmethodID getAccessibleChildFromContextMethod;
67
jmethodID getAccessibleBoundsOnScreenFromContextMethod;
68
jmethodID getAccessibleXcoordFromContextMethod;
69
jmethodID getAccessibleYcoordFromContextMethod;
70
jmethodID getAccessibleHeightFromContextMethod;
71
jmethodID getAccessibleWidthFromContextMethod;
72
73
jmethodID getAccessibleComponentFromContextMethod;
74
jmethodID getAccessibleActionFromContextMethod;
75
jmethodID getAccessibleSelectionFromContextMethod;
76
jmethodID getAccessibleTextFromContextMethod;
77
jmethodID getAccessibleValueFromContextMethod;
78
79
/* begin AccessibleTable */
80
jmethodID getAccessibleTableFromContextMethod;
81
jmethodID getAccessibleTableRowHeaderMethod;
82
jmethodID getAccessibleTableColumnHeaderMethod;
83
jmethodID getAccessibleTableRowCountMethod;
84
jmethodID getAccessibleTableColumnCountMethod;
85
jmethodID getAccessibleTableCaptionMethod;
86
jmethodID getAccessibleTableSummaryMethod;
87
88
jmethodID getContextFromAccessibleTableMethod;
89
jmethodID getAccessibleTableCellAccessibleContextMethod;
90
jmethodID getAccessibleTableCellIndexMethod;
91
jmethodID getAccessibleTableCellRowExtentMethod;
92
jmethodID getAccessibleTableCellColumnExtentMethod;
93
jmethodID isAccessibleTableCellSelectedMethod;
94
95
jmethodID getAccessibleTableRowHeaderRowCountMethod;
96
jmethodID getAccessibleTableColumnHeaderRowCountMethod;
97
98
jmethodID getAccessibleTableRowHeaderColumnCountMethod;
99
jmethodID getAccessibleTableColumnHeaderColumnCountMethod;
100
101
jmethodID getAccessibleTableRowDescriptionMethod;
102
jmethodID getAccessibleTableColumnDescriptionMethod;
103
104
jmethodID getAccessibleTableRowSelectionCountMethod;
105
jmethodID isAccessibleTableRowSelectedMethod;
106
jmethodID getAccessibleTableRowSelectionsMethod;
107
108
jmethodID getAccessibleTableColumnSelectionCountMethod;
109
jmethodID isAccessibleTableColumnSelectedMethod;
110
jmethodID getAccessibleTableColumnSelectionsMethod;
111
112
jmethodID getAccessibleTableRowMethod;
113
jmethodID getAccessibleTableColumnMethod;
114
jmethodID getAccessibleTableIndexMethod;
115
116
/* end AccessibleTable */
117
118
/* begin AccessibleRelationSet */
119
120
jmethodID getAccessibleRelationSetMethod;
121
jmethodID getAccessibleRelationCountMethod;
122
jmethodID getAccessibleRelationKeyMethod;
123
jmethodID getAccessibleRelationTargetCountMethod;
124
jmethodID getAccessibleRelationTargetMethod;
125
126
/* end AccessibleRelationSet */
127
128
// AccessibleHypertext methods
129
jmethodID getAccessibleHypertextMethod;
130
jmethodID getAccessibleHyperlinkCountMethod;
131
jmethodID getAccessibleHyperlinkTextMethod;
132
jmethodID getAccessibleHyperlinkURLMethod;
133
jmethodID getAccessibleHyperlinkStartIndexMethod;
134
jmethodID getAccessibleHyperlinkEndIndexMethod;
135
jmethodID getAccessibleHypertextLinkIndexMethod;
136
jmethodID getAccessibleHyperlinkMethod;
137
jmethodID activateAccessibleHyperlinkMethod;
138
139
// AccessibleKeyBinding
140
jmethodID getAccessibleKeyBindingsCountMethod;
141
jmethodID getAccessibleKeyBindingCharMethod;
142
jmethodID getAccessibleKeyBindingModifiersMethod;
143
144
// AccessibleIcon
145
jmethodID getAccessibleIconsCountMethod;
146
jmethodID getAccessibleIconDescriptionMethod;
147
jmethodID getAccessibleIconHeightMethod;
148
jmethodID getAccessibleIconWidthMethod;
149
150
// AccessibleAction
151
jmethodID getAccessibleActionsCountMethod;
152
jmethodID getAccessibleActionNameMethod;
153
jmethodID doAccessibleActionsMethod;
154
155
// AccessibleText
156
jmethodID getAccessibleCharCountFromContextMethod;
157
jmethodID getAccessibleCaretPositionFromContextMethod;
158
jmethodID getAccessibleIndexAtPointFromContextMethod;
159
160
jmethodID getAccessibleLetterAtIndexFromContextMethod;
161
jmethodID getAccessibleWordAtIndexFromContextMethod;
162
jmethodID getAccessibleSentenceAtIndexFromContextMethod;
163
164
jmethodID getAccessibleTextSelectionStartFromContextMethod;
165
jmethodID getAccessibleTextSelectionEndFromContextMethod;
166
jmethodID getAccessibleTextSelectedTextFromContextMethod;
167
jmethodID getAccessibleAttributesAtIndexFromContextMethod;
168
jmethodID getAccessibleAttributeSetAtIndexFromContextMethod;
169
jmethodID getAccessibleTextRectAtIndexFromContextMethod;
170
jmethodID getAccessibleXcoordTextRectAtIndexFromContextMethod;
171
jmethodID getAccessibleYcoordTextRectAtIndexFromContextMethod;
172
jmethodID getAccessibleHeightTextRectAtIndexFromContextMethod;
173
jmethodID getAccessibleWidthTextRectAtIndexFromContextMethod;
174
jmethodID getAccessibleTextLineLeftBoundsFromContextMethod;
175
jmethodID getAccessibleTextLineRightBoundsFromContextMethod;
176
jmethodID getAccessibleTextRangeFromContextMethod;
177
178
jmethodID getCurrentAccessibleValueFromContextMethod;
179
jmethodID getMaximumAccessibleValueFromContextMethod;
180
jmethodID getMinimumAccessibleValueFromContextMethod;
181
182
jmethodID addAccessibleSelectionFromContextMethod;
183
jmethodID clearAccessibleSelectionFromContextMethod;
184
jmethodID getAccessibleSelectionContextFromContextMethod;
185
jmethodID getAccessibleSelectionCountFromContextMethod;
186
jmethodID isAccessibleChildSelectedFromContextMethod;
187
jmethodID removeAccessibleSelectionFromContextMethod;
188
jmethodID selectAllAccessibleSelectionFromContextMethod;
189
190
jmethodID addJavaEventNotificationMethod;
191
jmethodID removeJavaEventNotificationMethod;
192
jmethodID addAccessibilityEventNotificationMethod;
193
jmethodID removeAccessibilityEventNotificationMethod;
194
195
jmethodID getBoldFromAttributeSetMethod;
196
jmethodID getItalicFromAttributeSetMethod;
197
jmethodID getUnderlineFromAttributeSetMethod;
198
jmethodID getStrikethroughFromAttributeSetMethod;
199
jmethodID getSuperscriptFromAttributeSetMethod;
200
jmethodID getSubscriptFromAttributeSetMethod;
201
jmethodID getBackgroundColorFromAttributeSetMethod;
202
jmethodID getForegroundColorFromAttributeSetMethod;
203
jmethodID getFontFamilyFromAttributeSetMethod;
204
jmethodID getFontSizeFromAttributeSetMethod;
205
jmethodID getAlignmentFromAttributeSetMethod;
206
jmethodID getBidiLevelFromAttributeSetMethod;
207
jmethodID getFirstLineIndentFromAttributeSetMethod;
208
jmethodID getLeftIndentFromAttributeSetMethod;
209
jmethodID getRightIndentFromAttributeSetMethod;
210
jmethodID getLineSpacingFromAttributeSetMethod;
211
jmethodID getSpaceAboveFromAttributeSetMethod;
212
jmethodID getSpaceBelowFromAttributeSetMethod;
213
214
jmethodID setTextContentsMethod;
215
jmethodID getParentWithRoleMethod;
216
jmethodID getTopLevelObjectMethod;
217
jmethodID getParentWithRoleElseRootMethod;
218
jmethodID getObjectDepthMethod;
219
jmethodID getActiveDescendentMethod;
220
221
/**
222
* Additional methods for Teton
223
*/
224
jmethodID getVirtualAccessibleNameFromContextMethod; // Ben Key
225
jmethodID requestFocusMethod;
226
jmethodID selectTextRangeMethod;
227
jmethodID getTextAttributesInRangeMethod;
228
jmethodID getVisibleChildrenCountMethod;
229
jmethodID getVisibleChildMethod;
230
jmethodID setCaretPositionMethod;
231
232
jmethodID getCaretLocationMethod;
233
jmethodID getCaretLocationXMethod;
234
jmethodID getCaretLocationYMethod;
235
jmethodID getCaretLocationHeightMethod;
236
jmethodID getCaretLocationWidthMethod;
237
238
public:
239
AccessBridgeJavaEntryPoints(JNIEnv *jniEnvironment, jobject bridgeObject);
240
~AccessBridgeJavaEntryPoints();
241
BOOL BuildJavaEntryPoints();
242
243
// HWND management methods
244
BOOL isJavaWindow(jint window);
245
jobject getAccessibleContextFromHWND(jint window);
246
HWND getHWNDFromAccessibleContext(jobject accessibleContext);
247
248
// version methods
249
BOOL getVersionInfo(AccessBridgeVersionInfo *info);
250
251
// verification methods
252
BOOL verifyAccessibleText(jobject obj);
253
254
/* ===== utility methods ===== */
255
BOOL isSameObject(jobject obj1, jobject obj2);
256
BOOL setTextContents(const jobject accessibleContext, const wchar_t *text);
257
jobject getParentWithRole (const jobject accessibleContext, const wchar_t *role);
258
jobject getTopLevelObject (const jobject accessibleContext);
259
jobject getParentWithRoleElseRoot (const jobject accessibleContext, const wchar_t *role);
260
jint getObjectDepth (const jobject accessibleContext);
261
jobject getActiveDescendent (const jobject accessibleContext);
262
263
// Accessible Context methods
264
jobject getAccessibleContextAt(jint x, jint y, jobject AccessibleContext);
265
jobject getAccessibleContextWithFocus();
266
BOOL getAccessibleContextInfo(jobject AccessibleContext, AccessibleContextInfo *info);
267
jobject getAccessibleChildFromContext(jobject AccessibleContext, jint childIndex);
268
jobject getAccessibleParentFromContext(jobject AccessibleContext);
269
270
/* begin AccessibleTable methods */
271
272
BOOL getAccessibleTableInfo(jobject acParent, AccessibleTableInfo *tableInfo);
273
BOOL getAccessibleTableCellInfo(jobject accessibleTable,jint row, jint column,
274
AccessibleTableCellInfo *tableCellInfo);
275
276
BOOL getAccessibleTableRowHeader(jobject acParent, AccessibleTableInfo *tableInfo);
277
BOOL getAccessibleTableColumnHeader(jobject acParent, AccessibleTableInfo *tableInfo);
278
279
jobject getAccessibleTableRowDescription(jobject acParent, jint row);
280
jobject getAccessibleTableColumnDescription(jobject acParent, jint column);
281
282
jint getAccessibleTableRowSelectionCount(jobject accessibleTable);
283
BOOL isAccessibleTableRowSelected(jobject accessibleTable, jint row);
284
BOOL getAccessibleTableRowSelections(jobject accessibleTable, jint count, jint *selections);
285
286
jint getAccessibleTableColumnSelectionCount(jobject accessibleTable);
287
BOOL isAccessibleTableColumnSelected(jobject accessibleTable, jint column);
288
BOOL getAccessibleTableColumnSelections(jobject accessibleTable, jint count, jint *selections);
289
290
jint getAccessibleTableRow(jobject accessibleTable, jint index);
291
jint getAccessibleTableColumn(jobject accessibleTable, jint index);
292
jint getAccessibleTableIndex(jobject accessibleTable, jint row, jint column);
293
294
/* end AccessibleTable methods */
295
296
BOOL getAccessibleRelationSet(jobject accessibleContext, AccessibleRelationSetInfo *relationSetInfo);
297
298
// AccessibleHypertext methods
299
BOOL getAccessibleHypertext(jobject accessibleContext, AccessibleHypertextInfo *hyperlink);
300
301
BOOL activateAccessibleHyperlink(jobject accessibleContext, jobject accessibleHyperlink);
302
303
BOOL getAccessibleHypertextExt(const jobject accessibleContext,
304
const jint nStartIndex,
305
/* OUT */ AccessibleHypertextInfo *hypertext);
306
jint getAccessibleHyperlinkCount(const jobject accessibleContext);
307
jint getAccessibleHypertextLinkIndex(const jobject accessibleContext,
308
const jint nIndex);
309
BOOL getAccessibleHyperlink(const jobject accessibleContext,
310
const jint nIndex,
311
/* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo);
312
313
// Accessible Keybinding methods
314
BOOL getAccessibleKeyBindings(jobject accessibleContext, AccessibleKeyBindings *keyBindings);
315
316
// AccessibleIcon methods
317
BOOL getAccessibleIcons(jobject accessibleContext, AccessibleIcons *icons);
318
319
// AccessibleActionMethods
320
BOOL getAccessibleActions(jobject accessibleContext, AccessibleActions *actions);
321
BOOL doAccessibleActions(jobject accessibleContext, AccessibleActionsToDo *actionsToDo, jint *failure);
322
323
// Accessible Text methods
324
BOOL getAccessibleTextInfo(jobject AccessibleContext, AccessibleTextInfo *textInfo, jint x, jint y);
325
BOOL getAccessibleTextItems(jobject AccessibleContext, AccessibleTextItemsInfo *textItems, jint index);
326
BOOL getAccessibleTextSelectionInfo(jobject AccessibleContext, AccessibleTextSelectionInfo *selectionInfo);
327
BOOL getAccessibleTextAttributes(jobject AccessibleContext, jint index, AccessibleTextAttributesInfo *attributes);
328
BOOL getAccessibleTextRect(jobject AccessibleContext, AccessibleTextRectInfo *rectInfo, jint index);
329
BOOL getAccessibleCaretRect(jobject AccessibleContext, AccessibleTextRectInfo *rectInfo, jint index);
330
BOOL getAccessibleTextLineBounds(jobject AccessibleContext, jint index, jint *startIndex, jint *endIndex);
331
BOOL getAccessibleTextRange(jobject AccessibleContext, jint start, jint end, wchar_t *text, short len);
332
333
// Accessible Value methods
334
BOOL getCurrentAccessibleValueFromContext(jobject AccessibleContext, wchar_t *value, short len);
335
BOOL getMaximumAccessibleValueFromContext(jobject AccessibleContext, wchar_t *value, short len);
336
BOOL getMinimumAccessibleValueFromContext(jobject AccessibleContext, wchar_t *value, short len);
337
338
// Accessible Selection methods
339
void addAccessibleSelectionFromContext(jobject AccessibleContext, int i);
340
void clearAccessibleSelectionFromContext(jobject AccessibleContext);
341
jobject getAccessibleSelectionFromContext(jobject AccessibleContext, int i);
342
int getAccessibleSelectionCountFromContext(jobject AccessibleContext);
343
BOOL isAccessibleChildSelectedFromContext(jobject AccessibleContext, int i);
344
void removeAccessibleSelectionFromContext(jobject AccessibleContext, int i);
345
void selectAllAccessibleSelectionFromContext(jobject AccessibleContext);
346
347
// Event handling methods
348
BOOL addJavaEventNotification(jlong type);
349
BOOL removeJavaEventNotification(jlong type);
350
BOOL addAccessibilityEventNotification(jlong type);
351
BOOL removeAccessibilityEventNotification(jlong type);
352
353
/**
354
* Additional methods for Teton
355
*/
356
357
/**
358
* Gets the AccessibleName for a component based upon the JAWS algorithm. Returns
359
* whether successful.
360
*
361
* Bug ID 4916682 - Implement JAWS AccessibleName policy
362
*/
363
BOOL getVirtualAccessibleName(const jobject accessibleContext, wchar_t *name, int len);
364
365
/**
366
* Request focus for a component. Returns whether successful;
367
*
368
* Bug ID 4944757 - requestFocus method needed
369
*/
370
BOOL requestFocus(const jobject accessibleContext);
371
372
/**
373
* Selects text between two indices. Selection includes the text at the start index
374
* and the text at the end index. Returns whether successful;
375
*
376
* Bug ID 4944758 - selectTextRange method needed
377
*/
378
BOOL selectTextRange(const jobject accessibleContext, int startIndex, int endIndex);
379
380
/**
381
* Get text attributes between two indices. The attribute list includes the text at the
382
* start index and the text at the end index. Returns whether successful;
383
*
384
* Bug ID 4944761 - getTextAttributes between two indices method needed
385
*/
386
BOOL getTextAttributesInRange(const jobject accessibleContext, int startIndex, int endIndex,
387
AccessibleTextAttributesInfo *attributes, short *len);
388
389
/**
390
* Gets the number of visible children of a component. Returns -1 on error.
391
*
392
* Bug ID 4944762- getVisibleChildren for list-like components needed
393
*/
394
int getVisibleChildrenCount(const jobject accessibleContext);
395
396
/**
397
* Gets the visible children of an AccessibleContext. Returns whether successful;
398
*
399
* Bug ID 4944762- getVisibleChildren for list-like components needed
400
*/
401
BOOL getVisibleChildren(const jobject accessibleContext, const int startIndex,
402
VisibleChildrenInfo *visibleChildrenInfo);
403
404
/**
405
* Set the caret to a text position. Returns whether successful;
406
*
407
* Bug ID 4944770 - setCaretPosition method needed
408
*/
409
BOOL setCaretPosition(const jobject accessibleContext, int position);
410
411
/**
412
* Gets the bounding rectangle for the text caret
413
*/
414
BOOL getCaretLocation(jobject AccessibleContext, AccessibleTextRectInfo *rectInfo, jint index);
415
416
};
417
418
#endif
419
420