Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/windows/native/sun/bridge/AccessBridgeJavaEntryPoints.h
32287 views
/*1* Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation. Oracle designates this7* particular file as subject to the "Classpath" exception as provided8* by Oracle in the LICENSE file that accompanied this code.9*10* This code is distributed in the hope that it will be useful, but WITHOUT11* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or12* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License13* version 2 for more details (a copy is included in the LICENSE file that14* accompanied this code).15*16* You should have received a copy of the GNU General Public License version17* 2 along with this work; if not, write to the Free Software Foundation,18* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.19*20* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA21* or visit www.oracle.com if you need additional information or have any22* questions.23*/2425/*26* A class to manage JNI calls into AccessBridge.java27*/2829#include "AccessBridgePackages.h"3031#include <windows.h>32#include <jni.h>3334#ifndef __AccessBridgeJavaEntryPoints_H__35#define __AccessBridgeJavaEntryPoints_H__3637class AccessBridgeJavaEntryPoints {38JNIEnv *jniEnv;3940jobject accessBridgeObject;4142jclass bridgeClass;43jclass eventHandlerClass;4445jmethodID decrementReferenceMethod;46jmethodID getJavaVersionPropertyMethod;47jmethodID getAccessBridgeVersionMethod;4849jmethodID isJavaWindowMethod;50jmethodID isSameObjectMethod;51jmethodID getAccessibleContextFromHWNDMethod;52jmethodID getHWNDFromAccessibleContextMethod;5354jmethodID getAccessibleContextAtMethod;55jmethodID getAccessibleContextWithFocusMethod;5657jmethodID getAccessibleNameFromContextMethod;58jmethodID getAccessibleDescriptionFromContextMethod;59jmethodID getAccessibleRoleStringFromContextMethod;60jmethodID getAccessibleRoleStringFromContext_en_USMethod;61jmethodID getAccessibleStatesStringFromContextMethod;62jmethodID getAccessibleStatesStringFromContext_en_USMethod;63jmethodID getAccessibleParentFromContextMethod;64jmethodID getAccessibleIndexInParentFromContextMethod;65jmethodID getAccessibleChildrenCountFromContextMethod;66jmethodID getAccessibleChildFromContextMethod;67jmethodID getAccessibleBoundsOnScreenFromContextMethod;68jmethodID getAccessibleXcoordFromContextMethod;69jmethodID getAccessibleYcoordFromContextMethod;70jmethodID getAccessibleHeightFromContextMethod;71jmethodID getAccessibleWidthFromContextMethod;7273jmethodID getAccessibleComponentFromContextMethod;74jmethodID getAccessibleActionFromContextMethod;75jmethodID getAccessibleSelectionFromContextMethod;76jmethodID getAccessibleTextFromContextMethod;77jmethodID getAccessibleValueFromContextMethod;7879/* begin AccessibleTable */80jmethodID getAccessibleTableFromContextMethod;81jmethodID getAccessibleTableRowHeaderMethod;82jmethodID getAccessibleTableColumnHeaderMethod;83jmethodID getAccessibleTableRowCountMethod;84jmethodID getAccessibleTableColumnCountMethod;85jmethodID getAccessibleTableCaptionMethod;86jmethodID getAccessibleTableSummaryMethod;8788jmethodID getContextFromAccessibleTableMethod;89jmethodID getAccessibleTableCellAccessibleContextMethod;90jmethodID getAccessibleTableCellIndexMethod;91jmethodID getAccessibleTableCellRowExtentMethod;92jmethodID getAccessibleTableCellColumnExtentMethod;93jmethodID isAccessibleTableCellSelectedMethod;9495jmethodID getAccessibleTableRowHeaderRowCountMethod;96jmethodID getAccessibleTableColumnHeaderRowCountMethod;9798jmethodID getAccessibleTableRowHeaderColumnCountMethod;99jmethodID getAccessibleTableColumnHeaderColumnCountMethod;100101jmethodID getAccessibleTableRowDescriptionMethod;102jmethodID getAccessibleTableColumnDescriptionMethod;103104jmethodID getAccessibleTableRowSelectionCountMethod;105jmethodID isAccessibleTableRowSelectedMethod;106jmethodID getAccessibleTableRowSelectionsMethod;107108jmethodID getAccessibleTableColumnSelectionCountMethod;109jmethodID isAccessibleTableColumnSelectedMethod;110jmethodID getAccessibleTableColumnSelectionsMethod;111112jmethodID getAccessibleTableRowMethod;113jmethodID getAccessibleTableColumnMethod;114jmethodID getAccessibleTableIndexMethod;115116/* end AccessibleTable */117118/* begin AccessibleRelationSet */119120jmethodID getAccessibleRelationSetMethod;121jmethodID getAccessibleRelationCountMethod;122jmethodID getAccessibleRelationKeyMethod;123jmethodID getAccessibleRelationTargetCountMethod;124jmethodID getAccessibleRelationTargetMethod;125126/* end AccessibleRelationSet */127128// AccessibleHypertext methods129jmethodID getAccessibleHypertextMethod;130jmethodID getAccessibleHyperlinkCountMethod;131jmethodID getAccessibleHyperlinkTextMethod;132jmethodID getAccessibleHyperlinkURLMethod;133jmethodID getAccessibleHyperlinkStartIndexMethod;134jmethodID getAccessibleHyperlinkEndIndexMethod;135jmethodID getAccessibleHypertextLinkIndexMethod;136jmethodID getAccessibleHyperlinkMethod;137jmethodID activateAccessibleHyperlinkMethod;138139// AccessibleKeyBinding140jmethodID getAccessibleKeyBindingsCountMethod;141jmethodID getAccessibleKeyBindingCharMethod;142jmethodID getAccessibleKeyBindingModifiersMethod;143144// AccessibleIcon145jmethodID getAccessibleIconsCountMethod;146jmethodID getAccessibleIconDescriptionMethod;147jmethodID getAccessibleIconHeightMethod;148jmethodID getAccessibleIconWidthMethod;149150// AccessibleAction151jmethodID getAccessibleActionsCountMethod;152jmethodID getAccessibleActionNameMethod;153jmethodID doAccessibleActionsMethod;154155// AccessibleText156jmethodID getAccessibleCharCountFromContextMethod;157jmethodID getAccessibleCaretPositionFromContextMethod;158jmethodID getAccessibleIndexAtPointFromContextMethod;159160jmethodID getAccessibleLetterAtIndexFromContextMethod;161jmethodID getAccessibleWordAtIndexFromContextMethod;162jmethodID getAccessibleSentenceAtIndexFromContextMethod;163164jmethodID getAccessibleTextSelectionStartFromContextMethod;165jmethodID getAccessibleTextSelectionEndFromContextMethod;166jmethodID getAccessibleTextSelectedTextFromContextMethod;167jmethodID getAccessibleAttributesAtIndexFromContextMethod;168jmethodID getAccessibleAttributeSetAtIndexFromContextMethod;169jmethodID getAccessibleTextRectAtIndexFromContextMethod;170jmethodID getAccessibleXcoordTextRectAtIndexFromContextMethod;171jmethodID getAccessibleYcoordTextRectAtIndexFromContextMethod;172jmethodID getAccessibleHeightTextRectAtIndexFromContextMethod;173jmethodID getAccessibleWidthTextRectAtIndexFromContextMethod;174jmethodID getAccessibleTextLineLeftBoundsFromContextMethod;175jmethodID getAccessibleTextLineRightBoundsFromContextMethod;176jmethodID getAccessibleTextRangeFromContextMethod;177178jmethodID getCurrentAccessibleValueFromContextMethod;179jmethodID getMaximumAccessibleValueFromContextMethod;180jmethodID getMinimumAccessibleValueFromContextMethod;181182jmethodID addAccessibleSelectionFromContextMethod;183jmethodID clearAccessibleSelectionFromContextMethod;184jmethodID getAccessibleSelectionContextFromContextMethod;185jmethodID getAccessibleSelectionCountFromContextMethod;186jmethodID isAccessibleChildSelectedFromContextMethod;187jmethodID removeAccessibleSelectionFromContextMethod;188jmethodID selectAllAccessibleSelectionFromContextMethod;189190jmethodID addJavaEventNotificationMethod;191jmethodID removeJavaEventNotificationMethod;192jmethodID addAccessibilityEventNotificationMethod;193jmethodID removeAccessibilityEventNotificationMethod;194195jmethodID getBoldFromAttributeSetMethod;196jmethodID getItalicFromAttributeSetMethod;197jmethodID getUnderlineFromAttributeSetMethod;198jmethodID getStrikethroughFromAttributeSetMethod;199jmethodID getSuperscriptFromAttributeSetMethod;200jmethodID getSubscriptFromAttributeSetMethod;201jmethodID getBackgroundColorFromAttributeSetMethod;202jmethodID getForegroundColorFromAttributeSetMethod;203jmethodID getFontFamilyFromAttributeSetMethod;204jmethodID getFontSizeFromAttributeSetMethod;205jmethodID getAlignmentFromAttributeSetMethod;206jmethodID getBidiLevelFromAttributeSetMethod;207jmethodID getFirstLineIndentFromAttributeSetMethod;208jmethodID getLeftIndentFromAttributeSetMethod;209jmethodID getRightIndentFromAttributeSetMethod;210jmethodID getLineSpacingFromAttributeSetMethod;211jmethodID getSpaceAboveFromAttributeSetMethod;212jmethodID getSpaceBelowFromAttributeSetMethod;213214jmethodID setTextContentsMethod;215jmethodID getParentWithRoleMethod;216jmethodID getTopLevelObjectMethod;217jmethodID getParentWithRoleElseRootMethod;218jmethodID getObjectDepthMethod;219jmethodID getActiveDescendentMethod;220221/**222* Additional methods for Teton223*/224jmethodID getVirtualAccessibleNameFromContextMethod; // Ben Key225jmethodID requestFocusMethod;226jmethodID selectTextRangeMethod;227jmethodID getTextAttributesInRangeMethod;228jmethodID getVisibleChildrenCountMethod;229jmethodID getVisibleChildMethod;230jmethodID setCaretPositionMethod;231232jmethodID getCaretLocationMethod;233jmethodID getCaretLocationXMethod;234jmethodID getCaretLocationYMethod;235jmethodID getCaretLocationHeightMethod;236jmethodID getCaretLocationWidthMethod;237238public:239AccessBridgeJavaEntryPoints(JNIEnv *jniEnvironment, jobject bridgeObject);240~AccessBridgeJavaEntryPoints();241BOOL BuildJavaEntryPoints();242243// HWND management methods244BOOL isJavaWindow(jint window);245jobject getAccessibleContextFromHWND(jint window);246HWND getHWNDFromAccessibleContext(jobject accessibleContext);247248// version methods249BOOL getVersionInfo(AccessBridgeVersionInfo *info);250251// verification methods252BOOL verifyAccessibleText(jobject obj);253254/* ===== utility methods ===== */255BOOL isSameObject(jobject obj1, jobject obj2);256BOOL setTextContents(const jobject accessibleContext, const wchar_t *text);257jobject getParentWithRole (const jobject accessibleContext, const wchar_t *role);258jobject getTopLevelObject (const jobject accessibleContext);259jobject getParentWithRoleElseRoot (const jobject accessibleContext, const wchar_t *role);260jint getObjectDepth (const jobject accessibleContext);261jobject getActiveDescendent (const jobject accessibleContext);262263// Accessible Context methods264jobject getAccessibleContextAt(jint x, jint y, jobject AccessibleContext);265jobject getAccessibleContextWithFocus();266BOOL getAccessibleContextInfo(jobject AccessibleContext, AccessibleContextInfo *info);267jobject getAccessibleChildFromContext(jobject AccessibleContext, jint childIndex);268jobject getAccessibleParentFromContext(jobject AccessibleContext);269270/* begin AccessibleTable methods */271272BOOL getAccessibleTableInfo(jobject acParent, AccessibleTableInfo *tableInfo);273BOOL getAccessibleTableCellInfo(jobject accessibleTable,jint row, jint column,274AccessibleTableCellInfo *tableCellInfo);275276BOOL getAccessibleTableRowHeader(jobject acParent, AccessibleTableInfo *tableInfo);277BOOL getAccessibleTableColumnHeader(jobject acParent, AccessibleTableInfo *tableInfo);278279jobject getAccessibleTableRowDescription(jobject acParent, jint row);280jobject getAccessibleTableColumnDescription(jobject acParent, jint column);281282jint getAccessibleTableRowSelectionCount(jobject accessibleTable);283BOOL isAccessibleTableRowSelected(jobject accessibleTable, jint row);284BOOL getAccessibleTableRowSelections(jobject accessibleTable, jint count, jint *selections);285286jint getAccessibleTableColumnSelectionCount(jobject accessibleTable);287BOOL isAccessibleTableColumnSelected(jobject accessibleTable, jint column);288BOOL getAccessibleTableColumnSelections(jobject accessibleTable, jint count, jint *selections);289290jint getAccessibleTableRow(jobject accessibleTable, jint index);291jint getAccessibleTableColumn(jobject accessibleTable, jint index);292jint getAccessibleTableIndex(jobject accessibleTable, jint row, jint column);293294/* end AccessibleTable methods */295296BOOL getAccessibleRelationSet(jobject accessibleContext, AccessibleRelationSetInfo *relationSetInfo);297298// AccessibleHypertext methods299BOOL getAccessibleHypertext(jobject accessibleContext, AccessibleHypertextInfo *hyperlink);300301BOOL activateAccessibleHyperlink(jobject accessibleContext, jobject accessibleHyperlink);302303BOOL getAccessibleHypertextExt(const jobject accessibleContext,304const jint nStartIndex,305/* OUT */ AccessibleHypertextInfo *hypertext);306jint getAccessibleHyperlinkCount(const jobject accessibleContext);307jint getAccessibleHypertextLinkIndex(const jobject accessibleContext,308const jint nIndex);309BOOL getAccessibleHyperlink(const jobject accessibleContext,310const jint nIndex,311/* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo);312313// Accessible Keybinding methods314BOOL getAccessibleKeyBindings(jobject accessibleContext, AccessibleKeyBindings *keyBindings);315316// AccessibleIcon methods317BOOL getAccessibleIcons(jobject accessibleContext, AccessibleIcons *icons);318319// AccessibleActionMethods320BOOL getAccessibleActions(jobject accessibleContext, AccessibleActions *actions);321BOOL doAccessibleActions(jobject accessibleContext, AccessibleActionsToDo *actionsToDo, jint *failure);322323// Accessible Text methods324BOOL getAccessibleTextInfo(jobject AccessibleContext, AccessibleTextInfo *textInfo, jint x, jint y);325BOOL getAccessibleTextItems(jobject AccessibleContext, AccessibleTextItemsInfo *textItems, jint index);326BOOL getAccessibleTextSelectionInfo(jobject AccessibleContext, AccessibleTextSelectionInfo *selectionInfo);327BOOL getAccessibleTextAttributes(jobject AccessibleContext, jint index, AccessibleTextAttributesInfo *attributes);328BOOL getAccessibleTextRect(jobject AccessibleContext, AccessibleTextRectInfo *rectInfo, jint index);329BOOL getAccessibleCaretRect(jobject AccessibleContext, AccessibleTextRectInfo *rectInfo, jint index);330BOOL getAccessibleTextLineBounds(jobject AccessibleContext, jint index, jint *startIndex, jint *endIndex);331BOOL getAccessibleTextRange(jobject AccessibleContext, jint start, jint end, wchar_t *text, short len);332333// Accessible Value methods334BOOL getCurrentAccessibleValueFromContext(jobject AccessibleContext, wchar_t *value, short len);335BOOL getMaximumAccessibleValueFromContext(jobject AccessibleContext, wchar_t *value, short len);336BOOL getMinimumAccessibleValueFromContext(jobject AccessibleContext, wchar_t *value, short len);337338// Accessible Selection methods339void addAccessibleSelectionFromContext(jobject AccessibleContext, int i);340void clearAccessibleSelectionFromContext(jobject AccessibleContext);341jobject getAccessibleSelectionFromContext(jobject AccessibleContext, int i);342int getAccessibleSelectionCountFromContext(jobject AccessibleContext);343BOOL isAccessibleChildSelectedFromContext(jobject AccessibleContext, int i);344void removeAccessibleSelectionFromContext(jobject AccessibleContext, int i);345void selectAllAccessibleSelectionFromContext(jobject AccessibleContext);346347// Event handling methods348BOOL addJavaEventNotification(jlong type);349BOOL removeJavaEventNotification(jlong type);350BOOL addAccessibilityEventNotification(jlong type);351BOOL removeAccessibilityEventNotification(jlong type);352353/**354* Additional methods for Teton355*/356357/**358* Gets the AccessibleName for a component based upon the JAWS algorithm. Returns359* whether successful.360*361* Bug ID 4916682 - Implement JAWS AccessibleName policy362*/363BOOL getVirtualAccessibleName(const jobject accessibleContext, wchar_t *name, int len);364365/**366* Request focus for a component. Returns whether successful;367*368* Bug ID 4944757 - requestFocus method needed369*/370BOOL requestFocus(const jobject accessibleContext);371372/**373* Selects text between two indices. Selection includes the text at the start index374* and the text at the end index. Returns whether successful;375*376* Bug ID 4944758 - selectTextRange method needed377*/378BOOL selectTextRange(const jobject accessibleContext, int startIndex, int endIndex);379380/**381* Get text attributes between two indices. The attribute list includes the text at the382* start index and the text at the end index. Returns whether successful;383*384* Bug ID 4944761 - getTextAttributes between two indices method needed385*/386BOOL getTextAttributesInRange(const jobject accessibleContext, int startIndex, int endIndex,387AccessibleTextAttributesInfo *attributes, short *len);388389/**390* Gets the number of visible children of a component. Returns -1 on error.391*392* Bug ID 4944762- getVisibleChildren for list-like components needed393*/394int getVisibleChildrenCount(const jobject accessibleContext);395396/**397* Gets the visible children of an AccessibleContext. Returns whether successful;398*399* Bug ID 4944762- getVisibleChildren for list-like components needed400*/401BOOL getVisibleChildren(const jobject accessibleContext, const int startIndex,402VisibleChildrenInfo *visibleChildrenInfo);403404/**405* Set the caret to a text position. Returns whether successful;406*407* Bug ID 4944770 - setCaretPosition method needed408*/409BOOL setCaretPosition(const jobject accessibleContext, int position);410411/**412* Gets the bounding rectangle for the text caret413*/414BOOL getCaretLocation(jobject AccessibleContext, AccessibleTextRectInfo *rectInfo, jint index);415416};417418#endif419420421