Path: blob/master/src/jdk.accessibility/windows/native/libjavaaccessbridge/AccessBridgeJavaEntryPoints.h
40957 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;4748jmethodID isJavaWindowMethod;49jmethodID isSameObjectMethod;50jmethodID getAccessibleContextFromHWNDMethod;51jmethodID getHWNDFromAccessibleContextMethod;5253jmethodID getAccessibleContextAtMethod;54jmethodID getAccessibleContextWithFocusMethod;5556jmethodID getAccessibleNameFromContextMethod;57jmethodID getAccessibleDescriptionFromContextMethod;58jmethodID getAccessibleRoleStringFromContextMethod;59jmethodID getAccessibleRoleStringFromContext_en_USMethod;60jmethodID getAccessibleStatesStringFromContextMethod;61jmethodID getAccessibleStatesStringFromContext_en_USMethod;62jmethodID getAccessibleParentFromContextMethod;63jmethodID getAccessibleIndexInParentFromContextMethod;64jmethodID getAccessibleChildrenCountFromContextMethod;65jmethodID getAccessibleChildFromContextMethod;66jmethodID getAccessibleBoundsOnScreenFromContextMethod;67jmethodID getAccessibleXcoordFromContextMethod;68jmethodID getAccessibleYcoordFromContextMethod;69jmethodID getAccessibleHeightFromContextMethod;70jmethodID getAccessibleWidthFromContextMethod;7172jmethodID getAccessibleComponentFromContextMethod;73jmethodID getAccessibleActionFromContextMethod;74jmethodID getAccessibleSelectionFromContextMethod;75jmethodID getAccessibleTextFromContextMethod;76jmethodID getAccessibleValueFromContextMethod;7778/* begin AccessibleTable */79jmethodID getAccessibleTableFromContextMethod;80jmethodID getAccessibleTableRowHeaderMethod;81jmethodID getAccessibleTableColumnHeaderMethod;82jmethodID getAccessibleTableRowCountMethod;83jmethodID getAccessibleTableColumnCountMethod;84jmethodID getAccessibleTableCaptionMethod;85jmethodID getAccessibleTableSummaryMethod;8687jmethodID getContextFromAccessibleTableMethod;88jmethodID getAccessibleTableCellAccessibleContextMethod;89jmethodID getAccessibleTableCellIndexMethod;90jmethodID getAccessibleTableCellRowExtentMethod;91jmethodID getAccessibleTableCellColumnExtentMethod;92jmethodID isAccessibleTableCellSelectedMethod;9394jmethodID getAccessibleTableRowHeaderRowCountMethod;95jmethodID getAccessibleTableColumnHeaderRowCountMethod;9697jmethodID getAccessibleTableRowHeaderColumnCountMethod;98jmethodID getAccessibleTableColumnHeaderColumnCountMethod;99100jmethodID getAccessibleTableRowDescriptionMethod;101jmethodID getAccessibleTableColumnDescriptionMethod;102103jmethodID getAccessibleTableRowSelectionCountMethod;104jmethodID isAccessibleTableRowSelectedMethod;105jmethodID getAccessibleTableRowSelectionsMethod;106107jmethodID getAccessibleTableColumnSelectionCountMethod;108jmethodID isAccessibleTableColumnSelectedMethod;109jmethodID getAccessibleTableColumnSelectionsMethod;110111jmethodID getAccessibleTableRowMethod;112jmethodID getAccessibleTableColumnMethod;113jmethodID getAccessibleTableIndexMethod;114115/* end AccessibleTable */116117/* begin AccessibleRelationSet */118119jmethodID getAccessibleRelationSetMethod;120jmethodID getAccessibleRelationCountMethod;121jmethodID getAccessibleRelationKeyMethod;122jmethodID getAccessibleRelationTargetCountMethod;123jmethodID getAccessibleRelationTargetMethod;124125/* end AccessibleRelationSet */126127// AccessibleHypertext methods128jmethodID getAccessibleHypertextMethod;129jmethodID getAccessibleHyperlinkCountMethod;130jmethodID getAccessibleHyperlinkTextMethod;131jmethodID getAccessibleHyperlinkURLMethod;132jmethodID getAccessibleHyperlinkStartIndexMethod;133jmethodID getAccessibleHyperlinkEndIndexMethod;134jmethodID getAccessibleHypertextLinkIndexMethod;135jmethodID getAccessibleHyperlinkMethod;136jmethodID activateAccessibleHyperlinkMethod;137138// AccessibleKeyBinding139jmethodID getAccessibleKeyBindingsCountMethod;140jmethodID getAccessibleKeyBindingCharMethod;141jmethodID getAccessibleKeyBindingModifiersMethod;142143// AccessibleIcon144jmethodID getAccessibleIconsCountMethod;145jmethodID getAccessibleIconDescriptionMethod;146jmethodID getAccessibleIconHeightMethod;147jmethodID getAccessibleIconWidthMethod;148149// AccessibleAction150jmethodID getAccessibleActionsCountMethod;151jmethodID getAccessibleActionNameMethod;152jmethodID doAccessibleActionsMethod;153154// AccessibleText155jmethodID getAccessibleCharCountFromContextMethod;156jmethodID getAccessibleCaretPositionFromContextMethod;157jmethodID getAccessibleIndexAtPointFromContextMethod;158159jmethodID getAccessibleLetterAtIndexFromContextMethod;160jmethodID getAccessibleWordAtIndexFromContextMethod;161jmethodID getAccessibleSentenceAtIndexFromContextMethod;162163jmethodID getAccessibleTextSelectionStartFromContextMethod;164jmethodID getAccessibleTextSelectionEndFromContextMethod;165jmethodID getAccessibleTextSelectedTextFromContextMethod;166jmethodID getAccessibleAttributesAtIndexFromContextMethod;167jmethodID getAccessibleAttributeSetAtIndexFromContextMethod;168jmethodID getAccessibleTextRectAtIndexFromContextMethod;169jmethodID getAccessibleXcoordTextRectAtIndexFromContextMethod;170jmethodID getAccessibleYcoordTextRectAtIndexFromContextMethod;171jmethodID getAccessibleHeightTextRectAtIndexFromContextMethod;172jmethodID getAccessibleWidthTextRectAtIndexFromContextMethod;173jmethodID getAccessibleTextLineLeftBoundsFromContextMethod;174jmethodID getAccessibleTextLineRightBoundsFromContextMethod;175jmethodID getAccessibleTextRangeFromContextMethod;176177jmethodID getCurrentAccessibleValueFromContextMethod;178jmethodID getMaximumAccessibleValueFromContextMethod;179jmethodID getMinimumAccessibleValueFromContextMethod;180181jmethodID addAccessibleSelectionFromContextMethod;182jmethodID clearAccessibleSelectionFromContextMethod;183jmethodID getAccessibleSelectionContextFromContextMethod;184jmethodID getAccessibleSelectionCountFromContextMethod;185jmethodID isAccessibleChildSelectedFromContextMethod;186jmethodID removeAccessibleSelectionFromContextMethod;187jmethodID selectAllAccessibleSelectionFromContextMethod;188189jmethodID addJavaEventNotificationMethod;190jmethodID removeJavaEventNotificationMethod;191jmethodID addAccessibilityEventNotificationMethod;192jmethodID removeAccessibilityEventNotificationMethod;193194jmethodID getBoldFromAttributeSetMethod;195jmethodID getItalicFromAttributeSetMethod;196jmethodID getUnderlineFromAttributeSetMethod;197jmethodID getStrikethroughFromAttributeSetMethod;198jmethodID getSuperscriptFromAttributeSetMethod;199jmethodID getSubscriptFromAttributeSetMethod;200jmethodID getBackgroundColorFromAttributeSetMethod;201jmethodID getForegroundColorFromAttributeSetMethod;202jmethodID getFontFamilyFromAttributeSetMethod;203jmethodID getFontSizeFromAttributeSetMethod;204jmethodID getAlignmentFromAttributeSetMethod;205jmethodID getBidiLevelFromAttributeSetMethod;206jmethodID getFirstLineIndentFromAttributeSetMethod;207jmethodID getLeftIndentFromAttributeSetMethod;208jmethodID getRightIndentFromAttributeSetMethod;209jmethodID getLineSpacingFromAttributeSetMethod;210jmethodID getSpaceAboveFromAttributeSetMethod;211jmethodID getSpaceBelowFromAttributeSetMethod;212213jmethodID setTextContentsMethod;214jmethodID getParentWithRoleMethod;215jmethodID getTopLevelObjectMethod;216jmethodID getParentWithRoleElseRootMethod;217jmethodID getObjectDepthMethod;218jmethodID getActiveDescendentMethod;219220/**221* Additional methods for Teton222*/223jmethodID getVirtualAccessibleNameFromContextMethod; // Ben Key224jmethodID requestFocusMethod;225jmethodID selectTextRangeMethod;226jmethodID getTextAttributesInRangeMethod;227jmethodID getVisibleChildrenCountMethod;228jmethodID getVisibleChildMethod;229jmethodID setCaretPositionMethod;230231jmethodID getCaretLocationMethod;232jmethodID getCaretLocationXMethod;233jmethodID getCaretLocationYMethod;234jmethodID getCaretLocationHeightMethod;235jmethodID getCaretLocationWidthMethod;236237public:238AccessBridgeJavaEntryPoints(JNIEnv *jniEnvironment, jobject bridgeObject);239~AccessBridgeJavaEntryPoints();240BOOL BuildJavaEntryPoints();241242// HWND management methods243BOOL isJavaWindow(jint window);244jobject getAccessibleContextFromHWND(jint window);245HWND getHWNDFromAccessibleContext(jobject accessibleContext);246247// version methods248BOOL getVersionInfo(AccessBridgeVersionInfo *info);249250// verification methods251BOOL verifyAccessibleText(jobject obj);252253/* ===== utility methods ===== */254BOOL isSameObject(jobject obj1, jobject obj2);255BOOL setTextContents(const jobject accessibleContext, const wchar_t *text);256jobject getParentWithRole (const jobject accessibleContext, const wchar_t *role);257jobject getTopLevelObject (const jobject accessibleContext);258jobject getParentWithRoleElseRoot (const jobject accessibleContext, const wchar_t *role);259jint getObjectDepth (const jobject accessibleContext);260jobject getActiveDescendent (const jobject accessibleContext);261262// Accessible Context methods263jobject getAccessibleContextAt(jint x, jint y, jobject AccessibleContext);264jobject getAccessibleContextWithFocus();265BOOL getAccessibleContextInfo(jobject AccessibleContext, AccessibleContextInfo *info);266jobject getAccessibleChildFromContext(jobject AccessibleContext, jint childIndex);267jobject getAccessibleParentFromContext(jobject AccessibleContext);268269/* begin AccessibleTable methods */270271BOOL getAccessibleTableInfo(jobject acParent, AccessibleTableInfo *tableInfo);272BOOL getAccessibleTableCellInfo(jobject accessibleTable,jint row, jint column,273AccessibleTableCellInfo *tableCellInfo);274275BOOL getAccessibleTableRowHeader(jobject acParent, AccessibleTableInfo *tableInfo);276BOOL getAccessibleTableColumnHeader(jobject acParent, AccessibleTableInfo *tableInfo);277278jobject getAccessibleTableRowDescription(jobject acParent, jint row);279jobject getAccessibleTableColumnDescription(jobject acParent, jint column);280281jint getAccessibleTableRowSelectionCount(jobject accessibleTable);282BOOL isAccessibleTableRowSelected(jobject accessibleTable, jint row);283BOOL getAccessibleTableRowSelections(jobject accessibleTable, jint count, jint *selections);284285jint getAccessibleTableColumnSelectionCount(jobject accessibleTable);286BOOL isAccessibleTableColumnSelected(jobject accessibleTable, jint column);287BOOL getAccessibleTableColumnSelections(jobject accessibleTable, jint count, jint *selections);288289jint getAccessibleTableRow(jobject accessibleTable, jint index);290jint getAccessibleTableColumn(jobject accessibleTable, jint index);291jint getAccessibleTableIndex(jobject accessibleTable, jint row, jint column);292293/* end AccessibleTable methods */294295BOOL getAccessibleRelationSet(jobject accessibleContext, AccessibleRelationSetInfo *relationSetInfo);296297// AccessibleHypertext methods298BOOL getAccessibleHypertext(jobject accessibleContext, AccessibleHypertextInfo *hyperlink);299300BOOL activateAccessibleHyperlink(jobject accessibleContext, jobject accessibleHyperlink);301302BOOL getAccessibleHypertextExt(const jobject accessibleContext,303const jint nStartIndex,304/* OUT */ AccessibleHypertextInfo *hypertext);305jint getAccessibleHyperlinkCount(const jobject accessibleContext);306jint getAccessibleHypertextLinkIndex(const jobject accessibleContext,307const jint nIndex);308BOOL getAccessibleHyperlink(const jobject accessibleContext,309const jint nIndex,310/* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo);311312// Accessible Keybinding methods313BOOL getAccessibleKeyBindings(jobject accessibleContext, AccessibleKeyBindings *keyBindings);314315// AccessibleIcon methods316BOOL getAccessibleIcons(jobject accessibleContext, AccessibleIcons *icons);317318// AccessibleActionMethods319BOOL getAccessibleActions(jobject accessibleContext, AccessibleActions *actions);320BOOL doAccessibleActions(jobject accessibleContext, AccessibleActionsToDo *actionsToDo, jint *failure);321322// Accessible Text methods323BOOL getAccessibleTextInfo(jobject AccessibleContext, AccessibleTextInfo *textInfo, jint x, jint y);324BOOL getAccessibleTextItems(jobject AccessibleContext, AccessibleTextItemsInfo *textItems, jint index);325BOOL getAccessibleTextSelectionInfo(jobject AccessibleContext, AccessibleTextSelectionInfo *selectionInfo);326BOOL getAccessibleTextAttributes(jobject AccessibleContext, jint index, AccessibleTextAttributesInfo *attributes);327BOOL getAccessibleTextRect(jobject AccessibleContext, AccessibleTextRectInfo *rectInfo, jint index);328BOOL getAccessibleCaretRect(jobject AccessibleContext, AccessibleTextRectInfo *rectInfo, jint index);329BOOL getAccessibleTextLineBounds(jobject AccessibleContext, jint index, jint *startIndex, jint *endIndex);330BOOL getAccessibleTextRange(jobject AccessibleContext, jint start, jint end, wchar_t *text, short len);331332// Accessible Value methods333BOOL getCurrentAccessibleValueFromContext(jobject AccessibleContext, wchar_t *value, short len);334BOOL getMaximumAccessibleValueFromContext(jobject AccessibleContext, wchar_t *value, short len);335BOOL getMinimumAccessibleValueFromContext(jobject AccessibleContext, wchar_t *value, short len);336337// Accessible Selection methods338void addAccessibleSelectionFromContext(jobject AccessibleContext, int i);339void clearAccessibleSelectionFromContext(jobject AccessibleContext);340jobject getAccessibleSelectionFromContext(jobject AccessibleContext, int i);341int getAccessibleSelectionCountFromContext(jobject AccessibleContext);342BOOL isAccessibleChildSelectedFromContext(jobject AccessibleContext, int i);343void removeAccessibleSelectionFromContext(jobject AccessibleContext, int i);344void selectAllAccessibleSelectionFromContext(jobject AccessibleContext);345346// Event handling methods347BOOL addJavaEventNotification(jlong type);348BOOL removeJavaEventNotification(jlong type);349BOOL addAccessibilityEventNotification(jlong type);350BOOL removeAccessibilityEventNotification(jlong type);351352/**353* Additional methods for Teton354*/355356/**357* Gets the AccessibleName for a component based upon the JAWS algorithm. Returns358* whether successful.359*360* Bug ID 4916682 - Implement JAWS AccessibleName policy361*/362BOOL getVirtualAccessibleName(const jobject accessibleContext, wchar_t *name, int len);363364/**365* Request focus for a component. Returns whether successful;366*367* Bug ID 4944757 - requestFocus method needed368*/369BOOL requestFocus(const jobject accessibleContext);370371/**372* Selects text between two indices. Selection includes the text at the start index373* and the text at the end index. Returns whether successful;374*375* Bug ID 4944758 - selectTextRange method needed376*/377BOOL selectTextRange(const jobject accessibleContext, int startIndex, int endIndex);378379/**380* Get text attributes between two indices. The attribute list includes the text at the381* start index and the text at the end index. Returns whether successful;382*383* Bug ID 4944761 - getTextAttributes between two indices method needed384*/385BOOL getTextAttributesInRange(const jobject accessibleContext, int startIndex, int endIndex,386AccessibleTextAttributesInfo *attributes, short *len);387388/**389* Gets the number of visible children of a component. Returns -1 on error.390*391* Bug ID 4944762- getVisibleChildren for list-like components needed392*/393int getVisibleChildrenCount(const jobject accessibleContext);394395/**396* Gets the visible children of an AccessibleContext. Returns whether successful;397*398* Bug ID 4944762- getVisibleChildren for list-like components needed399*/400BOOL getVisibleChildren(const jobject accessibleContext, const int startIndex,401VisibleChildrenInfo *visibleChildrenInfo);402403/**404* Set the caret to a text position. Returns whether successful;405*406* Bug ID 4944770 - setCaretPosition method needed407*/408BOOL setCaretPosition(const jobject accessibleContext, int position);409410/**411* Gets the bounding rectangle for the text caret412*/413BOOL getCaretLocation(jobject AccessibleContext, AccessibleTextRectInfo *rectInfo, jint index);414415};416417#endif418419420