mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
af4dc39641
--HG-- rename : accessible/src/atk/ARIAGridAccessibleWrap.h => accessible/atk/ARIAGridAccessibleWrap.h rename : accessible/src/atk/AccessibleWrap.cpp => accessible/atk/AccessibleWrap.cpp rename : accessible/src/atk/AccessibleWrap.h => accessible/atk/AccessibleWrap.h rename : accessible/src/atk/ApplicationAccessibleWrap.cpp => accessible/atk/ApplicationAccessibleWrap.cpp rename : accessible/src/atk/ApplicationAccessibleWrap.h => accessible/atk/ApplicationAccessibleWrap.h rename : accessible/src/atk/AtkSocketAccessible.cpp => accessible/atk/AtkSocketAccessible.cpp rename : accessible/src/atk/AtkSocketAccessible.h => accessible/atk/AtkSocketAccessible.h rename : accessible/src/atk/DocAccessibleWrap.cpp => accessible/atk/DocAccessibleWrap.cpp rename : accessible/src/atk/DocAccessibleWrap.h => accessible/atk/DocAccessibleWrap.h rename : accessible/src/atk/HTMLTableAccessibleWrap.h => accessible/atk/HTMLTableAccessibleWrap.h rename : accessible/src/atk/HyperTextAccessibleWrap.h => accessible/atk/HyperTextAccessibleWrap.h rename : accessible/src/atk/ImageAccessibleWrap.h => accessible/atk/ImageAccessibleWrap.h rename : accessible/src/atk/InterfaceInitFuncs.h => accessible/atk/InterfaceInitFuncs.h rename : accessible/src/atk/Makefile.in => accessible/atk/Makefile.in rename : accessible/src/atk/Platform.cpp => accessible/atk/Platform.cpp rename : accessible/src/atk/RootAccessibleWrap.cpp => accessible/atk/RootAccessibleWrap.cpp rename : accessible/src/atk/RootAccessibleWrap.h => accessible/atk/RootAccessibleWrap.h rename : accessible/src/atk/TextLeafAccessibleWrap.h => accessible/atk/TextLeafAccessibleWrap.h rename : accessible/src/atk/UtilInterface.cpp => accessible/atk/UtilInterface.cpp rename : accessible/src/atk/XULListboxAccessibleWrap.h => accessible/atk/XULListboxAccessibleWrap.h rename : accessible/src/atk/XULMenuAccessibleWrap.h => accessible/atk/XULMenuAccessibleWrap.h rename : accessible/src/atk/XULTreeGridAccessibleWrap.h => accessible/atk/XULTreeGridAccessibleWrap.h rename : accessible/src/atk/moz.build => accessible/atk/moz.build rename : accessible/src/atk/nsMai.h => accessible/atk/nsMai.h rename : accessible/src/atk/nsMaiHyperlink.cpp => accessible/atk/nsMaiHyperlink.cpp rename : accessible/src/atk/nsMaiHyperlink.h => accessible/atk/nsMaiHyperlink.h rename : accessible/src/atk/nsMaiInterfaceAction.cpp => accessible/atk/nsMaiInterfaceAction.cpp rename : accessible/src/atk/nsMaiInterfaceComponent.cpp => accessible/atk/nsMaiInterfaceComponent.cpp rename : accessible/src/atk/nsMaiInterfaceDocument.cpp => accessible/atk/nsMaiInterfaceDocument.cpp rename : accessible/src/atk/nsMaiInterfaceEditableText.cpp => accessible/atk/nsMaiInterfaceEditableText.cpp rename : accessible/src/atk/nsMaiInterfaceHyperlinkImpl.cpp => accessible/atk/nsMaiInterfaceHyperlinkImpl.cpp rename : accessible/src/atk/nsMaiInterfaceHypertext.cpp => accessible/atk/nsMaiInterfaceHypertext.cpp rename : accessible/src/atk/nsMaiInterfaceImage.cpp => accessible/atk/nsMaiInterfaceImage.cpp rename : accessible/src/atk/nsMaiInterfaceSelection.cpp => accessible/atk/nsMaiInterfaceSelection.cpp rename : accessible/src/atk/nsMaiInterfaceTable.cpp => accessible/atk/nsMaiInterfaceTable.cpp rename : accessible/src/atk/nsMaiInterfaceText.cpp => accessible/atk/nsMaiInterfaceText.cpp rename : accessible/src/atk/nsMaiInterfaceValue.cpp => accessible/atk/nsMaiInterfaceValue.cpp rename : accessible/src/atk/nsStateMap.h => accessible/atk/nsStateMap.h rename : accessible/src/base/ARIAMap.cpp => accessible/base/ARIAMap.cpp rename : accessible/src/base/ARIAMap.h => accessible/base/ARIAMap.h rename : accessible/src/base/ARIAStateMap.cpp => accessible/base/ARIAStateMap.cpp rename : accessible/src/base/ARIAStateMap.h => accessible/base/ARIAStateMap.h rename : accessible/src/base/AccCollector.cpp => accessible/base/AccCollector.cpp rename : accessible/src/base/AccCollector.h => accessible/base/AccCollector.h rename : accessible/src/base/AccEvent.cpp => accessible/base/AccEvent.cpp rename : accessible/src/base/AccEvent.h => accessible/base/AccEvent.h rename : accessible/src/base/AccGroupInfo.cpp => accessible/base/AccGroupInfo.cpp rename : accessible/src/base/AccGroupInfo.h => accessible/base/AccGroupInfo.h rename : accessible/src/base/AccIterator.cpp => accessible/base/AccIterator.cpp rename : accessible/src/base/AccIterator.h => accessible/base/AccIterator.h rename : accessible/src/base/AccTypes.h => accessible/base/AccTypes.h rename : accessible/src/base/Asserts.cpp => accessible/base/Asserts.cpp rename : accessible/src/base/DocManager.cpp => accessible/base/DocManager.cpp rename : accessible/src/base/DocManager.h => accessible/base/DocManager.h rename : accessible/src/base/EventQueue.cpp => accessible/base/EventQueue.cpp rename : accessible/src/base/EventQueue.h => accessible/base/EventQueue.h rename : accessible/src/base/Filters.cpp => accessible/base/Filters.cpp rename : accessible/src/base/Filters.h => accessible/base/Filters.h rename : accessible/src/base/FocusManager.cpp => accessible/base/FocusManager.cpp rename : accessible/src/base/FocusManager.h => accessible/base/FocusManager.h rename : accessible/src/base/Logging.cpp => accessible/base/Logging.cpp rename : accessible/src/base/Logging.h => accessible/base/Logging.h rename : accessible/src/base/Makefile.in => accessible/base/Makefile.in rename : accessible/src/base/NotificationController.cpp => accessible/base/NotificationController.cpp rename : accessible/src/base/NotificationController.h => accessible/base/NotificationController.h rename : accessible/src/base/Platform.h => accessible/base/Platform.h rename : accessible/src/base/Relation.h => accessible/base/Relation.h rename : accessible/src/base/RelationType.h => accessible/base/RelationType.h rename : accessible/src/base/RelationTypeMap.h => accessible/base/RelationTypeMap.h rename : accessible/src/base/Role.h => accessible/base/Role.h rename : accessible/src/base/RoleMap.h => accessible/base/RoleMap.h rename : accessible/src/base/SelectionManager.cpp => accessible/base/SelectionManager.cpp rename : accessible/src/base/SelectionManager.h => accessible/base/SelectionManager.h rename : accessible/src/base/States.h => accessible/base/States.h rename : accessible/src/base/Statistics.h => accessible/base/Statistics.h rename : accessible/src/base/StyleInfo.cpp => accessible/base/StyleInfo.cpp rename : accessible/src/base/StyleInfo.h => accessible/base/StyleInfo.h rename : accessible/src/base/TextAttrs.cpp => accessible/base/TextAttrs.cpp rename : accessible/src/base/TextAttrs.h => accessible/base/TextAttrs.h rename : accessible/src/base/TextRange.cpp => accessible/base/TextRange.cpp rename : accessible/src/base/TextRange.h => accessible/base/TextRange.h rename : accessible/src/base/TextUpdater.cpp => accessible/base/TextUpdater.cpp rename : accessible/src/base/TextUpdater.h => accessible/base/TextUpdater.h rename : accessible/src/base/TreeWalker.cpp => accessible/base/TreeWalker.cpp rename : accessible/src/base/TreeWalker.h => accessible/base/TreeWalker.h rename : accessible/src/base/moz.build => accessible/base/moz.build rename : accessible/src/base/nsAccCache.h => accessible/base/nsAccCache.h rename : accessible/src/base/nsAccUtils.cpp => accessible/base/nsAccUtils.cpp rename : accessible/src/base/nsAccUtils.h => accessible/base/nsAccUtils.h rename : accessible/src/base/nsAccessibilityService.cpp => accessible/base/nsAccessibilityService.cpp rename : accessible/src/base/nsAccessibilityService.h => accessible/base/nsAccessibilityService.h rename : accessible/src/base/nsAccessiblePivot.cpp => accessible/base/nsAccessiblePivot.cpp rename : accessible/src/base/nsAccessiblePivot.h => accessible/base/nsAccessiblePivot.h rename : accessible/src/base/nsCoreUtils.cpp => accessible/base/nsCoreUtils.cpp rename : accessible/src/base/nsCoreUtils.h => accessible/base/nsCoreUtils.h rename : accessible/src/base/nsEventShell.cpp => accessible/base/nsEventShell.cpp rename : accessible/src/base/nsEventShell.h => accessible/base/nsEventShell.h rename : accessible/src/base/nsTextEquivUtils.cpp => accessible/base/nsTextEquivUtils.cpp rename : accessible/src/base/nsTextEquivUtils.h => accessible/base/nsTextEquivUtils.h rename : accessible/src/generic/ARIAGridAccessible-inl.h => accessible/generic/ARIAGridAccessible-inl.h rename : accessible/src/generic/ARIAGridAccessible.cpp => accessible/generic/ARIAGridAccessible.cpp rename : accessible/src/generic/ARIAGridAccessible.h => accessible/generic/ARIAGridAccessible.h rename : accessible/src/generic/Accessible-inl.h => accessible/generic/Accessible-inl.h rename : accessible/src/generic/Accessible.cpp => accessible/generic/Accessible.cpp rename : accessible/src/generic/Accessible.h => accessible/generic/Accessible.h rename : accessible/src/generic/ApplicationAccessible.cpp => accessible/generic/ApplicationAccessible.cpp rename : accessible/src/generic/ApplicationAccessible.h => accessible/generic/ApplicationAccessible.h rename : accessible/src/generic/BaseAccessibles.cpp => accessible/generic/BaseAccessibles.cpp rename : accessible/src/generic/BaseAccessibles.h => accessible/generic/BaseAccessibles.h rename : accessible/src/generic/DocAccessible-inl.h => accessible/generic/DocAccessible-inl.h rename : accessible/src/generic/DocAccessible.cpp => accessible/generic/DocAccessible.cpp rename : accessible/src/generic/DocAccessible.h => accessible/generic/DocAccessible.h rename : accessible/src/generic/FormControlAccessible.cpp => accessible/generic/FormControlAccessible.cpp rename : accessible/src/generic/FormControlAccessible.h => accessible/generic/FormControlAccessible.h rename : accessible/src/generic/HyperTextAccessible-inl.h => accessible/generic/HyperTextAccessible-inl.h rename : accessible/src/generic/HyperTextAccessible.cpp => accessible/generic/HyperTextAccessible.cpp rename : accessible/src/generic/HyperTextAccessible.h => accessible/generic/HyperTextAccessible.h rename : accessible/src/generic/ImageAccessible.cpp => accessible/generic/ImageAccessible.cpp rename : accessible/src/generic/ImageAccessible.h => accessible/generic/ImageAccessible.h rename : accessible/src/generic/OuterDocAccessible.cpp => accessible/generic/OuterDocAccessible.cpp rename : accessible/src/generic/OuterDocAccessible.h => accessible/generic/OuterDocAccessible.h rename : accessible/src/generic/RootAccessible.cpp => accessible/generic/RootAccessible.cpp rename : accessible/src/generic/RootAccessible.h => accessible/generic/RootAccessible.h rename : accessible/src/generic/TableAccessible.h => accessible/generic/TableAccessible.h rename : accessible/src/generic/TableCellAccessible.cpp => accessible/generic/TableCellAccessible.cpp rename : accessible/src/generic/TableCellAccessible.h => accessible/generic/TableCellAccessible.h rename : accessible/src/generic/TextLeafAccessible.cpp => accessible/generic/TextLeafAccessible.cpp rename : accessible/src/generic/TextLeafAccessible.h => accessible/generic/TextLeafAccessible.h rename : accessible/src/generic/moz.build => accessible/generic/moz.build rename : accessible/src/html/HTMLCanvasAccessible.cpp => accessible/html/HTMLCanvasAccessible.cpp rename : accessible/src/html/HTMLCanvasAccessible.h => accessible/html/HTMLCanvasAccessible.h rename : accessible/src/html/HTMLElementAccessibles.cpp => accessible/html/HTMLElementAccessibles.cpp rename : accessible/src/html/HTMLElementAccessibles.h => accessible/html/HTMLElementAccessibles.h rename : accessible/src/html/HTMLFormControlAccessible.cpp => accessible/html/HTMLFormControlAccessible.cpp rename : accessible/src/html/HTMLFormControlAccessible.h => accessible/html/HTMLFormControlAccessible.h rename : accessible/src/html/HTMLImageMapAccessible.cpp => accessible/html/HTMLImageMapAccessible.cpp rename : accessible/src/html/HTMLImageMapAccessible.h => accessible/html/HTMLImageMapAccessible.h rename : accessible/src/html/HTMLLinkAccessible.cpp => accessible/html/HTMLLinkAccessible.cpp rename : accessible/src/html/HTMLLinkAccessible.h => accessible/html/HTMLLinkAccessible.h rename : accessible/src/html/HTMLListAccessible.cpp => accessible/html/HTMLListAccessible.cpp rename : accessible/src/html/HTMLListAccessible.h => accessible/html/HTMLListAccessible.h rename : accessible/src/html/HTMLSelectAccessible.cpp => accessible/html/HTMLSelectAccessible.cpp rename : accessible/src/html/HTMLSelectAccessible.h => accessible/html/HTMLSelectAccessible.h rename : accessible/src/html/HTMLTableAccessible.cpp => accessible/html/HTMLTableAccessible.cpp rename : accessible/src/html/HTMLTableAccessible.h => accessible/html/HTMLTableAccessible.h rename : accessible/src/html/moz.build => accessible/html/moz.build rename : accessible/src/jsat/AccessFu.css => accessible/jsat/AccessFu.css rename : accessible/src/jsat/AccessFu.jsm => accessible/jsat/AccessFu.jsm rename : accessible/src/jsat/Constants.jsm => accessible/jsat/Constants.jsm rename : accessible/src/jsat/ContentControl.jsm => accessible/jsat/ContentControl.jsm rename : accessible/src/jsat/EventManager.jsm => accessible/jsat/EventManager.jsm rename : accessible/src/jsat/Gestures.jsm => accessible/jsat/Gestures.jsm rename : accessible/src/jsat/OutputGenerator.jsm => accessible/jsat/OutputGenerator.jsm rename : accessible/src/jsat/PointerAdapter.jsm => accessible/jsat/PointerAdapter.jsm rename : accessible/src/jsat/Presentation.jsm => accessible/jsat/Presentation.jsm rename : accessible/src/jsat/TraversalRules.jsm => accessible/jsat/TraversalRules.jsm rename : accessible/src/jsat/Utils.jsm => accessible/jsat/Utils.jsm rename : accessible/src/jsat/content-script.js => accessible/jsat/content-script.js rename : accessible/src/jsat/jar.mn => accessible/jsat/jar.mn rename : accessible/src/jsat/moz.build => accessible/jsat/moz.build rename : accessible/src/jsat/sounds/clicked.ogg => accessible/jsat/sounds/clicked.ogg rename : accessible/src/jsat/sounds/virtual_cursor_key.ogg => accessible/jsat/sounds/virtual_cursor_key.ogg rename : accessible/src/jsat/sounds/virtual_cursor_move.ogg => accessible/jsat/sounds/virtual_cursor_move.ogg rename : accessible/src/mac/ARIAGridAccessibleWrap.h => accessible/mac/ARIAGridAccessibleWrap.h rename : accessible/src/mac/AccessibleWrap.h => accessible/mac/AccessibleWrap.h rename : accessible/src/mac/AccessibleWrap.mm => accessible/mac/AccessibleWrap.mm rename : accessible/src/mac/ApplicationAccessibleWrap.h => accessible/mac/ApplicationAccessibleWrap.h rename : accessible/src/mac/DocAccessibleWrap.h => accessible/mac/DocAccessibleWrap.h rename : accessible/src/mac/DocAccessibleWrap.mm => accessible/mac/DocAccessibleWrap.mm rename : accessible/src/mac/HTMLTableAccessibleWrap.h => accessible/mac/HTMLTableAccessibleWrap.h rename : accessible/src/mac/HyperTextAccessibleWrap.h => accessible/mac/HyperTextAccessibleWrap.h rename : accessible/src/mac/ImageAccessibleWrap.h => accessible/mac/ImageAccessibleWrap.h rename : accessible/src/mac/MacUtils.h => accessible/mac/MacUtils.h rename : accessible/src/mac/MacUtils.mm => accessible/mac/MacUtils.mm rename : accessible/src/mac/Platform.mm => accessible/mac/Platform.mm rename : accessible/src/mac/RootAccessibleWrap.h => accessible/mac/RootAccessibleWrap.h rename : accessible/src/mac/RootAccessibleWrap.mm => accessible/mac/RootAccessibleWrap.mm rename : accessible/src/mac/TextLeafAccessibleWrap.h => accessible/mac/TextLeafAccessibleWrap.h rename : accessible/src/mac/XULListboxAccessibleWrap.h => accessible/mac/XULListboxAccessibleWrap.h rename : accessible/src/mac/XULMenuAccessibleWrap.h => accessible/mac/XULMenuAccessibleWrap.h rename : accessible/src/mac/XULTreeGridAccessibleWrap.h => accessible/mac/XULTreeGridAccessibleWrap.h rename : accessible/src/mac/moz.build => accessible/mac/moz.build rename : accessible/src/mac/mozAccessible.h => accessible/mac/mozAccessible.h rename : accessible/src/mac/mozAccessible.mm => accessible/mac/mozAccessible.mm rename : accessible/src/mac/mozAccessibleProtocol.h => accessible/mac/mozAccessibleProtocol.h rename : accessible/src/mac/mozActionElements.h => accessible/mac/mozActionElements.h rename : accessible/src/mac/mozActionElements.mm => accessible/mac/mozActionElements.mm rename : accessible/src/mac/mozDocAccessible.h => accessible/mac/mozDocAccessible.h rename : accessible/src/mac/mozDocAccessible.mm => accessible/mac/mozDocAccessible.mm rename : accessible/src/mac/mozHTMLAccessible.h => accessible/mac/mozHTMLAccessible.h rename : accessible/src/mac/mozHTMLAccessible.mm => accessible/mac/mozHTMLAccessible.mm rename : accessible/src/mac/mozTextAccessible.h => accessible/mac/mozTextAccessible.h rename : accessible/src/mac/mozTextAccessible.mm => accessible/mac/mozTextAccessible.mm rename : accessible/src/other/ARIAGridAccessibleWrap.h => accessible/other/ARIAGridAccessibleWrap.h rename : accessible/src/other/AccessibleWrap.cpp => accessible/other/AccessibleWrap.cpp rename : accessible/src/other/AccessibleWrap.h => accessible/other/AccessibleWrap.h rename : accessible/src/other/ApplicationAccessibleWrap.h => accessible/other/ApplicationAccessibleWrap.h rename : accessible/src/other/DocAccessibleWrap.h => accessible/other/DocAccessibleWrap.h rename : accessible/src/other/HTMLTableAccessibleWrap.h => accessible/other/HTMLTableAccessibleWrap.h rename : accessible/src/other/HyperTextAccessibleWrap.h => accessible/other/HyperTextAccessibleWrap.h rename : accessible/src/other/ImageAccessibleWrap.h => accessible/other/ImageAccessibleWrap.h rename : accessible/src/other/Platform.cpp => accessible/other/Platform.cpp rename : accessible/src/other/RootAccessibleWrap.h => accessible/other/RootAccessibleWrap.h rename : accessible/src/other/TextLeafAccessibleWrap.h => accessible/other/TextLeafAccessibleWrap.h rename : accessible/src/other/XULListboxAccessibleWrap.h => accessible/other/XULListboxAccessibleWrap.h rename : accessible/src/other/XULMenuAccessibleWrap.h => accessible/other/XULMenuAccessibleWrap.h rename : accessible/src/other/XULTreeGridAccessibleWrap.h => accessible/other/XULTreeGridAccessibleWrap.h rename : accessible/src/other/moz.build => accessible/other/moz.build rename : accessible/src/windows/ia2/Makefile.in => accessible/windows/ia2/Makefile.in rename : accessible/src/windows/ia2/ia2Accessible.cpp => accessible/windows/ia2/ia2Accessible.cpp rename : accessible/src/windows/ia2/ia2Accessible.h => accessible/windows/ia2/ia2Accessible.h rename : accessible/src/windows/ia2/ia2AccessibleAction.cpp => accessible/windows/ia2/ia2AccessibleAction.cpp rename : accessible/src/windows/ia2/ia2AccessibleAction.h => accessible/windows/ia2/ia2AccessibleAction.h rename : accessible/src/windows/ia2/ia2AccessibleComponent.cpp => accessible/windows/ia2/ia2AccessibleComponent.cpp rename : accessible/src/windows/ia2/ia2AccessibleComponent.h => accessible/windows/ia2/ia2AccessibleComponent.h rename : accessible/src/windows/ia2/ia2AccessibleEditableText.cpp => accessible/windows/ia2/ia2AccessibleEditableText.cpp rename : accessible/src/windows/ia2/ia2AccessibleEditableText.h => accessible/windows/ia2/ia2AccessibleEditableText.h rename : accessible/src/windows/ia2/ia2AccessibleHyperlink.cpp => accessible/windows/ia2/ia2AccessibleHyperlink.cpp rename : accessible/src/windows/ia2/ia2AccessibleHyperlink.h => accessible/windows/ia2/ia2AccessibleHyperlink.h rename : accessible/src/windows/ia2/ia2AccessibleHypertext.cpp => accessible/windows/ia2/ia2AccessibleHypertext.cpp rename : accessible/src/windows/ia2/ia2AccessibleHypertext.h => accessible/windows/ia2/ia2AccessibleHypertext.h rename : accessible/src/windows/ia2/ia2AccessibleImage.cpp => accessible/windows/ia2/ia2AccessibleImage.cpp rename : accessible/src/windows/ia2/ia2AccessibleImage.h => accessible/windows/ia2/ia2AccessibleImage.h rename : accessible/src/windows/ia2/ia2AccessibleRelation.cpp => accessible/windows/ia2/ia2AccessibleRelation.cpp rename : accessible/src/windows/ia2/ia2AccessibleRelation.h => accessible/windows/ia2/ia2AccessibleRelation.h rename : accessible/src/windows/ia2/ia2AccessibleTable.cpp => accessible/windows/ia2/ia2AccessibleTable.cpp rename : accessible/src/windows/ia2/ia2AccessibleTable.h => accessible/windows/ia2/ia2AccessibleTable.h rename : accessible/src/windows/ia2/ia2AccessibleTableCell.cpp => accessible/windows/ia2/ia2AccessibleTableCell.cpp rename : accessible/src/windows/ia2/ia2AccessibleTableCell.h => accessible/windows/ia2/ia2AccessibleTableCell.h rename : accessible/src/windows/ia2/ia2AccessibleText.cpp => accessible/windows/ia2/ia2AccessibleText.cpp rename : accessible/src/windows/ia2/ia2AccessibleText.h => accessible/windows/ia2/ia2AccessibleText.h rename : accessible/src/windows/ia2/ia2AccessibleValue.cpp => accessible/windows/ia2/ia2AccessibleValue.cpp rename : accessible/src/windows/ia2/ia2AccessibleValue.h => accessible/windows/ia2/ia2AccessibleValue.h rename : accessible/src/windows/ia2/moz.build => accessible/windows/ia2/moz.build rename : accessible/src/windows/moz.build => accessible/windows/moz.build rename : accessible/src/windows/msaa/ARIAGridAccessibleWrap.cpp => accessible/windows/msaa/ARIAGridAccessibleWrap.cpp rename : accessible/src/windows/msaa/ARIAGridAccessibleWrap.h => accessible/windows/msaa/ARIAGridAccessibleWrap.h rename : accessible/src/windows/msaa/AccessibleWrap.cpp => accessible/windows/msaa/AccessibleWrap.cpp rename : accessible/src/windows/msaa/AccessibleWrap.h => accessible/windows/msaa/AccessibleWrap.h rename : accessible/src/windows/msaa/ApplicationAccessibleWrap.cpp => accessible/windows/msaa/ApplicationAccessibleWrap.cpp rename : accessible/src/windows/msaa/ApplicationAccessibleWrap.h => accessible/windows/msaa/ApplicationAccessibleWrap.h rename : accessible/src/windows/msaa/Compatibility.cpp => accessible/windows/msaa/Compatibility.cpp rename : accessible/src/windows/msaa/Compatibility.h => accessible/windows/msaa/Compatibility.h rename : accessible/src/windows/msaa/DocAccessibleWrap.cpp => accessible/windows/msaa/DocAccessibleWrap.cpp rename : accessible/src/windows/msaa/DocAccessibleWrap.h => accessible/windows/msaa/DocAccessibleWrap.h rename : accessible/src/windows/msaa/EnumVariant.cpp => accessible/windows/msaa/EnumVariant.cpp rename : accessible/src/windows/msaa/EnumVariant.h => accessible/windows/msaa/EnumVariant.h rename : accessible/src/windows/msaa/HTMLTableAccessibleWrap.cpp => accessible/windows/msaa/HTMLTableAccessibleWrap.cpp rename : accessible/src/windows/msaa/HTMLTableAccessibleWrap.h => accessible/windows/msaa/HTMLTableAccessibleWrap.h rename : accessible/src/windows/msaa/HTMLWin32ObjectAccessible.cpp => accessible/windows/msaa/HTMLWin32ObjectAccessible.cpp rename : accessible/src/windows/msaa/HTMLWin32ObjectAccessible.h => accessible/windows/msaa/HTMLWin32ObjectAccessible.h rename : accessible/src/windows/msaa/HyperTextAccessibleWrap.cpp => accessible/windows/msaa/HyperTextAccessibleWrap.cpp rename : accessible/src/windows/msaa/HyperTextAccessibleWrap.h => accessible/windows/msaa/HyperTextAccessibleWrap.h rename : accessible/src/windows/msaa/IUnknownImpl.cpp => accessible/windows/msaa/IUnknownImpl.cpp rename : accessible/src/windows/msaa/IUnknownImpl.h => accessible/windows/msaa/IUnknownImpl.h rename : accessible/src/windows/msaa/ImageAccessibleWrap.cpp => accessible/windows/msaa/ImageAccessibleWrap.cpp rename : accessible/src/windows/msaa/ImageAccessibleWrap.h => accessible/windows/msaa/ImageAccessibleWrap.h rename : accessible/src/windows/msaa/Platform.cpp => accessible/windows/msaa/Platform.cpp rename : accessible/src/windows/msaa/RootAccessibleWrap.cpp => accessible/windows/msaa/RootAccessibleWrap.cpp rename : accessible/src/windows/msaa/RootAccessibleWrap.h => accessible/windows/msaa/RootAccessibleWrap.h rename : accessible/src/windows/msaa/ServiceProvider.cpp => accessible/windows/msaa/ServiceProvider.cpp rename : accessible/src/windows/msaa/ServiceProvider.h => accessible/windows/msaa/ServiceProvider.h rename : accessible/src/windows/msaa/TextLeafAccessibleWrap.cpp => accessible/windows/msaa/TextLeafAccessibleWrap.cpp rename : accessible/src/windows/msaa/TextLeafAccessibleWrap.h => accessible/windows/msaa/TextLeafAccessibleWrap.h rename : accessible/src/windows/msaa/XULListboxAccessibleWrap.cpp => accessible/windows/msaa/XULListboxAccessibleWrap.cpp rename : accessible/src/windows/msaa/XULListboxAccessibleWrap.h => accessible/windows/msaa/XULListboxAccessibleWrap.h rename : accessible/src/windows/msaa/XULMenuAccessibleWrap.cpp => accessible/windows/msaa/XULMenuAccessibleWrap.cpp rename : accessible/src/windows/msaa/XULMenuAccessibleWrap.h => accessible/windows/msaa/XULMenuAccessibleWrap.h rename : accessible/src/windows/msaa/XULTreeGridAccessibleWrap.cpp => accessible/windows/msaa/XULTreeGridAccessibleWrap.cpp rename : accessible/src/windows/msaa/XULTreeGridAccessibleWrap.h => accessible/windows/msaa/XULTreeGridAccessibleWrap.h rename : accessible/src/windows/msaa/moz.build => accessible/windows/msaa/moz.build rename : accessible/src/windows/msaa/nsEventMap.h => accessible/windows/msaa/nsEventMap.h rename : accessible/src/windows/msaa/nsWinUtils.cpp => accessible/windows/msaa/nsWinUtils.cpp rename : accessible/src/windows/msaa/nsWinUtils.h => accessible/windows/msaa/nsWinUtils.h rename : accessible/src/windows/sdn/moz.build => accessible/windows/sdn/moz.build rename : accessible/src/windows/sdn/sdnAccessible-inl.h => accessible/windows/sdn/sdnAccessible-inl.h rename : accessible/src/windows/sdn/sdnAccessible.cpp => accessible/windows/sdn/sdnAccessible.cpp rename : accessible/src/windows/sdn/sdnAccessible.h => accessible/windows/sdn/sdnAccessible.h rename : accessible/src/windows/sdn/sdnDocAccessible.cpp => accessible/windows/sdn/sdnDocAccessible.cpp rename : accessible/src/windows/sdn/sdnDocAccessible.h => accessible/windows/sdn/sdnDocAccessible.h rename : accessible/src/windows/sdn/sdnTextAccessible.cpp => accessible/windows/sdn/sdnTextAccessible.cpp rename : accessible/src/windows/sdn/sdnTextAccessible.h => accessible/windows/sdn/sdnTextAccessible.h rename : accessible/src/windows/uia/Makefile.in => accessible/windows/uia/Makefile.in rename : accessible/src/windows/uia/moz.build => accessible/windows/uia/moz.build rename : accessible/src/windows/uia/uiaRawElmProvider.cpp => accessible/windows/uia/uiaRawElmProvider.cpp rename : accessible/src/windows/uia/uiaRawElmProvider.h => accessible/windows/uia/uiaRawElmProvider.h rename : accessible/src/xpcom/AccEventGen.py => accessible/xpcom/AccEventGen.py rename : accessible/src/xpcom/AccEvents.conf => accessible/xpcom/AccEvents.conf rename : accessible/src/xpcom/Makefile.in => accessible/xpcom/Makefile.in rename : accessible/src/xpcom/moz.build => accessible/xpcom/moz.build rename : accessible/src/xpcom/nsAccessibleRelation.cpp => accessible/xpcom/nsAccessibleRelation.cpp rename : accessible/src/xpcom/nsAccessibleRelation.h => accessible/xpcom/nsAccessibleRelation.h rename : accessible/src/xpcom/xpcAccessibleHyperText.cpp => accessible/xpcom/xpcAccessibleHyperText.cpp rename : accessible/src/xpcom/xpcAccessibleHyperText.h => accessible/xpcom/xpcAccessibleHyperText.h rename : accessible/src/xpcom/xpcAccessibleSelectable.cpp => accessible/xpcom/xpcAccessibleSelectable.cpp rename : accessible/src/xpcom/xpcAccessibleSelectable.h => accessible/xpcom/xpcAccessibleSelectable.h rename : accessible/src/xpcom/xpcAccessibleTable.cpp => accessible/xpcom/xpcAccessibleTable.cpp rename : accessible/src/xpcom/xpcAccessibleTable.h => accessible/xpcom/xpcAccessibleTable.h rename : accessible/src/xpcom/xpcAccessibleTableCell.cpp => accessible/xpcom/xpcAccessibleTableCell.cpp rename : accessible/src/xpcom/xpcAccessibleTableCell.h => accessible/xpcom/xpcAccessibleTableCell.h rename : accessible/src/xpcom/xpcAccessibleTextRange.cpp => accessible/xpcom/xpcAccessibleTextRange.cpp rename : accessible/src/xpcom/xpcAccessibleTextRange.h => accessible/xpcom/xpcAccessibleTextRange.h rename : accessible/src/xpcom/xpcAccessibleValue.cpp => accessible/xpcom/xpcAccessibleValue.cpp rename : accessible/src/xpcom/xpcAccessibleValue.h => accessible/xpcom/xpcAccessibleValue.h rename : accessible/src/xul/XULAlertAccessible.cpp => accessible/xul/XULAlertAccessible.cpp rename : accessible/src/xul/XULAlertAccessible.h => accessible/xul/XULAlertAccessible.h rename : accessible/src/xul/XULColorPickerAccessible.cpp => accessible/xul/XULColorPickerAccessible.cpp rename : accessible/src/xul/XULColorPickerAccessible.h => accessible/xul/XULColorPickerAccessible.h rename : accessible/src/xul/XULComboboxAccessible.cpp => accessible/xul/XULComboboxAccessible.cpp rename : accessible/src/xul/XULComboboxAccessible.h => accessible/xul/XULComboboxAccessible.h rename : accessible/src/xul/XULElementAccessibles.cpp => accessible/xul/XULElementAccessibles.cpp rename : accessible/src/xul/XULElementAccessibles.h => accessible/xul/XULElementAccessibles.h rename : accessible/src/xul/XULFormControlAccessible.cpp => accessible/xul/XULFormControlAccessible.cpp rename : accessible/src/xul/XULFormControlAccessible.h => accessible/xul/XULFormControlAccessible.h rename : accessible/src/xul/XULListboxAccessible.cpp => accessible/xul/XULListboxAccessible.cpp rename : accessible/src/xul/XULListboxAccessible.h => accessible/xul/XULListboxAccessible.h rename : accessible/src/xul/XULMenuAccessible.cpp => accessible/xul/XULMenuAccessible.cpp rename : accessible/src/xul/XULMenuAccessible.h => accessible/xul/XULMenuAccessible.h rename : accessible/src/xul/XULSelectControlAccessible.cpp => accessible/xul/XULSelectControlAccessible.cpp rename : accessible/src/xul/XULSelectControlAccessible.h => accessible/xul/XULSelectControlAccessible.h rename : accessible/src/xul/XULSliderAccessible.cpp => accessible/xul/XULSliderAccessible.cpp rename : accessible/src/xul/XULSliderAccessible.h => accessible/xul/XULSliderAccessible.h rename : accessible/src/xul/XULTabAccessible.cpp => accessible/xul/XULTabAccessible.cpp rename : accessible/src/xul/XULTabAccessible.h => accessible/xul/XULTabAccessible.h rename : accessible/src/xul/XULTreeAccessible.cpp => accessible/xul/XULTreeAccessible.cpp rename : accessible/src/xul/XULTreeAccessible.h => accessible/xul/XULTreeAccessible.h rename : accessible/src/xul/XULTreeGridAccessible.cpp => accessible/xul/XULTreeGridAccessible.cpp rename : accessible/src/xul/XULTreeGridAccessible.h => accessible/xul/XULTreeGridAccessible.h rename : accessible/src/xul/moz.build => accessible/xul/moz.build
777 lines
22 KiB
Plaintext
777 lines
22 KiB
Plaintext
/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#import "mozAccessible.h"
|
|
|
|
#import "MacUtils.h"
|
|
#import "mozView.h"
|
|
|
|
#include "Accessible-inl.h"
|
|
#include "nsAccUtils.h"
|
|
#include "nsIAccessibleRelation.h"
|
|
#include "nsIAccessibleText.h"
|
|
#include "nsIAccessibleEditableText.h"
|
|
#include "nsIPersistentProperties2.h"
|
|
#include "Relation.h"
|
|
#include "Role.h"
|
|
#include "RootAccessible.h"
|
|
|
|
#include "mozilla/Services.h"
|
|
#include "nsRect.h"
|
|
#include "nsCocoaUtils.h"
|
|
#include "nsCoord.h"
|
|
#include "nsObjCExceptions.h"
|
|
#include "nsWhitespaceTokenizer.h"
|
|
|
|
using namespace mozilla;
|
|
using namespace mozilla::a11y;
|
|
|
|
// returns the passed in object if it is not ignored. if it's ignored, will return
|
|
// the first unignored ancestor.
|
|
static inline id
|
|
GetClosestInterestingAccessible(id anObject)
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
|
|
|
// this object is not ignored, so let's return it.
|
|
if (![anObject accessibilityIsIgnored])
|
|
return GetObjectOrRepresentedView(anObject);
|
|
|
|
// find the closest ancestor that is not ignored.
|
|
id unignoredObject = anObject;
|
|
while ((unignoredObject = [unignoredObject accessibilityAttributeValue:NSAccessibilityParentAttribute])) {
|
|
if (![unignoredObject accessibilityIsIgnored])
|
|
// object is not ignored, so let's stop the search.
|
|
break;
|
|
}
|
|
|
|
// if it's a mozAccessible, we need to take care to maybe return the view we
|
|
// represent, to the AT.
|
|
if ([unignoredObject respondsToSelector:@selector(hasRepresentedView)])
|
|
return GetObjectOrRepresentedView(unignoredObject);
|
|
|
|
return unignoredObject;
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
|
}
|
|
|
|
#pragma mark -
|
|
|
|
@implementation mozAccessible
|
|
|
|
- (id)initWithAccessible:(AccessibleWrap*)geckoAccessible
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
|
|
|
if ((self = [super init])) {
|
|
mGeckoAccessible = geckoAccessible;
|
|
mRole = geckoAccessible->Role();
|
|
}
|
|
|
|
return self;
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
|
}
|
|
|
|
- (void)dealloc
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
|
|
|
|
[mChildren release];
|
|
[super dealloc];
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK;
|
|
}
|
|
|
|
#pragma mark -
|
|
|
|
- (BOOL)accessibilityIsIgnored
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN;
|
|
|
|
// unknown (either unimplemented, or irrelevant) elements are marked as ignored
|
|
// as well as expired elements.
|
|
return !mGeckoAccessible || ([[self role] isEqualToString:NSAccessibilityUnknownRole] &&
|
|
!(mGeckoAccessible->InteractiveState() & states::FOCUSABLE));
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(NO);
|
|
}
|
|
|
|
- (NSArray*)accessibilityAttributeNames
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
|
|
|
// if we're expired, we don't support any attributes.
|
|
if (!mGeckoAccessible)
|
|
return [NSArray array];
|
|
|
|
static NSArray *generalAttributes = nil;
|
|
|
|
if (!generalAttributes) {
|
|
// standard attributes that are shared and supported by all generic elements.
|
|
generalAttributes = [[NSArray alloc] initWithObjects: NSAccessibilityChildrenAttribute,
|
|
NSAccessibilityParentAttribute,
|
|
NSAccessibilityRoleAttribute,
|
|
NSAccessibilityTitleAttribute,
|
|
NSAccessibilityValueAttribute,
|
|
NSAccessibilitySubroleAttribute,
|
|
NSAccessibilityRoleDescriptionAttribute,
|
|
NSAccessibilityPositionAttribute,
|
|
NSAccessibilityEnabledAttribute,
|
|
NSAccessibilitySizeAttribute,
|
|
NSAccessibilityWindowAttribute,
|
|
NSAccessibilityFocusedAttribute,
|
|
NSAccessibilityHelpAttribute,
|
|
NSAccessibilityTitleUIElementAttribute,
|
|
NSAccessibilityTopLevelUIElementAttribute,
|
|
NSAccessibilityDescriptionAttribute,
|
|
#if DEBUG
|
|
@"AXMozDescription",
|
|
#endif
|
|
nil];
|
|
}
|
|
|
|
return generalAttributes;
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
|
}
|
|
|
|
- (id)accessibilityAttributeValue:(NSString*)attribute
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
|
|
|
if (!mGeckoAccessible)
|
|
return nil;
|
|
|
|
#if DEBUG
|
|
if ([attribute isEqualToString:@"AXMozDescription"])
|
|
return [NSString stringWithFormat:@"role = %u native = %@", mRole, [self class]];
|
|
#endif
|
|
|
|
if ([attribute isEqualToString:NSAccessibilityChildrenAttribute])
|
|
return [self children];
|
|
if ([attribute isEqualToString:NSAccessibilityParentAttribute])
|
|
return [self parent];
|
|
|
|
#ifdef DEBUG_hakan
|
|
NSLog (@"(%@ responding to attr %@)", self, attribute);
|
|
#endif
|
|
|
|
if ([attribute isEqualToString:NSAccessibilityRoleAttribute])
|
|
return [self role];
|
|
if ([attribute isEqualToString:NSAccessibilityPositionAttribute])
|
|
return [self position];
|
|
if ([attribute isEqualToString:NSAccessibilitySubroleAttribute])
|
|
return [self subrole];
|
|
if ([attribute isEqualToString:NSAccessibilityEnabledAttribute])
|
|
return [NSNumber numberWithBool:[self isEnabled]];
|
|
if ([attribute isEqualToString:NSAccessibilityValueAttribute])
|
|
return [self value];
|
|
if ([attribute isEqualToString:NSAccessibilityRoleDescriptionAttribute])
|
|
return [self roleDescription];
|
|
if ([attribute isEqualToString:NSAccessibilityDescriptionAttribute])
|
|
return [self customDescription];
|
|
if ([attribute isEqualToString:NSAccessibilityFocusedAttribute])
|
|
return [NSNumber numberWithBool:[self isFocused]];
|
|
if ([attribute isEqualToString:NSAccessibilitySizeAttribute])
|
|
return [self size];
|
|
if ([attribute isEqualToString:NSAccessibilityWindowAttribute])
|
|
return [self window];
|
|
if ([attribute isEqualToString:NSAccessibilityTopLevelUIElementAttribute])
|
|
return [self window];
|
|
if ([attribute isEqualToString:NSAccessibilityTitleAttribute])
|
|
return [self title];
|
|
if ([attribute isEqualToString:NSAccessibilityTitleUIElementAttribute]) {
|
|
Relation rel = mGeckoAccessible->RelationByType(RelationType::LABELLED_BY);
|
|
Accessible* tempAcc = rel.Next();
|
|
return tempAcc ? GetNativeFromGeckoAccessible(tempAcc) : nil;
|
|
}
|
|
if ([attribute isEqualToString:NSAccessibilityHelpAttribute])
|
|
return [self help];
|
|
|
|
#ifdef DEBUG
|
|
NSLog (@"!!! %@ can't respond to attribute %@", self, attribute);
|
|
#endif
|
|
return nil;
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
|
}
|
|
|
|
- (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN;
|
|
|
|
if ([attribute isEqualToString:NSAccessibilityFocusedAttribute])
|
|
return [self canBeFocused];
|
|
|
|
return NO;
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(NO);
|
|
}
|
|
|
|
- (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
|
|
|
|
#ifdef DEBUG_hakan
|
|
NSLog (@"[%@] %@='%@'", self, attribute, value);
|
|
#endif
|
|
|
|
// we only support focusing elements so far.
|
|
if ([attribute isEqualToString:NSAccessibilityFocusedAttribute] && [value boolValue])
|
|
[self focus];
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK;
|
|
}
|
|
|
|
- (id)accessibilityHitTest:(NSPoint)point
|
|
{
|
|
if (!mGeckoAccessible)
|
|
return nil;
|
|
|
|
// Convert the given screen-global point in the cocoa coordinate system (with
|
|
// origin in the bottom-left corner of the screen) into point in the Gecko
|
|
// coordinate system (with origin in a top-left screen point).
|
|
NSScreen* mainView = [[NSScreen screens] objectAtIndex:0];
|
|
NSPoint tmpPoint = NSMakePoint(point.x,
|
|
[mainView frame].size.height - point.y);
|
|
nsIntPoint geckoPoint = nsCocoaUtils::
|
|
CocoaPointsToDevPixels(tmpPoint, nsCocoaUtils::GetBackingScaleFactor(mainView));
|
|
|
|
Accessible* child = mGeckoAccessible->ChildAtPoint(geckoPoint.x, geckoPoint.y,
|
|
Accessible::eDeepestChild);
|
|
|
|
if (child) {
|
|
mozAccessible* nativeChild = GetNativeFromGeckoAccessible(child);
|
|
if (nativeChild)
|
|
return GetClosestInterestingAccessible(nativeChild);
|
|
}
|
|
|
|
// if we didn't find anything, return ourself (or the first unignored ancestor).
|
|
return GetClosestInterestingAccessible(self);
|
|
}
|
|
|
|
- (NSArray*)accessibilityActionNames
|
|
{
|
|
return nil;
|
|
}
|
|
|
|
- (NSString*)accessibilityActionDescription:(NSString*)action
|
|
{
|
|
// by default we return whatever the MacOS API know about.
|
|
// if you have custom actions, override.
|
|
return NSAccessibilityActionDescription(action);
|
|
}
|
|
|
|
- (void)accessibilityPerformAction:(NSString*)action
|
|
{
|
|
}
|
|
|
|
- (id)accessibilityFocusedUIElement
|
|
{
|
|
if (!mGeckoAccessible)
|
|
return nil;
|
|
|
|
Accessible* focusedGeckoChild = mGeckoAccessible->FocusedChild();
|
|
if (focusedGeckoChild) {
|
|
mozAccessible *focusedChild = GetNativeFromGeckoAccessible(focusedGeckoChild);
|
|
if (focusedChild)
|
|
return GetClosestInterestingAccessible(focusedChild);
|
|
}
|
|
|
|
// return ourself if we can't get a native focused child.
|
|
return GetClosestInterestingAccessible(self);
|
|
}
|
|
|
|
#pragma mark -
|
|
|
|
- (id <mozAccessible>)parent
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
|
|
|
Accessible* accessibleParent = mGeckoAccessible->GetUnignoredParent();
|
|
if (accessibleParent) {
|
|
id nativeParent = GetNativeFromGeckoAccessible(accessibleParent);
|
|
if (nativeParent)
|
|
return GetClosestInterestingAccessible(nativeParent);
|
|
}
|
|
|
|
// GetUnignoredParent() returns null when there is no unignored accessible all the way up to
|
|
// the root accessible. so we'll have to return whatever native accessible is above our root accessible
|
|
// (which might be the owning NSWindow in the application, for example).
|
|
//
|
|
// get the native root accessible, and tell it to return its first parent unignored accessible.
|
|
RootAccessible* root = mGeckoAccessible->RootAccessible();
|
|
id nativeParent = GetNativeFromGeckoAccessible(static_cast<nsIAccessible*>(root));
|
|
NSAssert1 (nativeParent, @"!!! we can't find a parent for %@", self);
|
|
|
|
return GetClosestInterestingAccessible(nativeParent);
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
|
}
|
|
|
|
- (BOOL)hasRepresentedView
|
|
{
|
|
return NO;
|
|
}
|
|
|
|
- (id)representedView
|
|
{
|
|
return nil;
|
|
}
|
|
|
|
- (BOOL)isRoot
|
|
{
|
|
return NO;
|
|
}
|
|
|
|
// gets our native children lazily.
|
|
// returns nil when there are no children.
|
|
- (NSArray*)children
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
|
|
|
if (mChildren || !mGeckoAccessible->AreChildrenCached())
|
|
return mChildren;
|
|
|
|
mChildren = [[NSMutableArray alloc] init];
|
|
|
|
// get the array of children.
|
|
nsAutoTArray<Accessible*, 10> childrenArray;
|
|
mGeckoAccessible->GetUnignoredChildren(&childrenArray);
|
|
|
|
// now iterate through the children array, and get each native accessible.
|
|
uint32_t totalCount = childrenArray.Length();
|
|
for (uint32_t idx = 0; idx < totalCount; idx++) {
|
|
Accessible* curAccessible = childrenArray.ElementAt(idx);
|
|
if (curAccessible) {
|
|
mozAccessible *curNative = GetNativeFromGeckoAccessible(curAccessible);
|
|
if (curNative)
|
|
[mChildren addObject:GetObjectOrRepresentedView(curNative)];
|
|
}
|
|
}
|
|
|
|
#ifdef DEBUG_hakan
|
|
// make sure we're not returning any ignored accessibles.
|
|
NSEnumerator *e = [mChildren objectEnumerator];
|
|
mozAccessible *m = nil;
|
|
while ((m = [e nextObject])) {
|
|
NSAssert1(![m accessibilityIsIgnored], @"we should never return an ignored accessible! (%@)", m);
|
|
}
|
|
#endif
|
|
|
|
return mChildren;
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
|
}
|
|
|
|
- (NSValue*)position
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
|
|
|
if (!mGeckoAccessible)
|
|
return nil;
|
|
|
|
int32_t x = 0, y = 0, width = 0, height = 0;
|
|
mGeckoAccessible->GetBounds(&x, &y, &width, &height);
|
|
|
|
NSScreen* mainView = [[NSScreen screens] objectAtIndex:0];
|
|
CGFloat scaleFactor = nsCocoaUtils::GetBackingScaleFactor(mainView);
|
|
NSPoint p = NSMakePoint(static_cast<CGFloat>(x) / scaleFactor,
|
|
[mainView frame].size.height - static_cast<CGFloat>(y + height) / scaleFactor);
|
|
|
|
return [NSValue valueWithPoint:p];
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
|
}
|
|
|
|
- (NSValue*)size
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
|
|
|
if (!mGeckoAccessible)
|
|
return nil;
|
|
|
|
int32_t x = 0, y = 0, width = 0, height = 0;
|
|
mGeckoAccessible->GetBounds (&x, &y, &width, &height);
|
|
CGFloat scaleFactor =
|
|
nsCocoaUtils::GetBackingScaleFactor([[NSScreen screens] objectAtIndex:0]);
|
|
return [NSValue valueWithSize:NSMakeSize(static_cast<CGFloat>(width) / scaleFactor,
|
|
static_cast<CGFloat>(height) / scaleFactor)];
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
|
}
|
|
|
|
- (NSString*)role
|
|
{
|
|
if (!mGeckoAccessible)
|
|
return nil;
|
|
|
|
#ifdef DEBUG_A11Y
|
|
NS_ASSERTION(nsAccUtils::IsTextInterfaceSupportCorrect(mGeckoAccessible),
|
|
"Does not support nsIAccessibleText when it should");
|
|
#endif
|
|
|
|
#define ROLE(geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role, nameRule) \
|
|
case roles::geckoRole: \
|
|
return macRole;
|
|
|
|
switch (mRole) {
|
|
#include "RoleMap.h"
|
|
default:
|
|
NS_NOTREACHED("Unknown role.");
|
|
return NSAccessibilityUnknownRole;
|
|
}
|
|
|
|
#undef ROLE
|
|
}
|
|
|
|
- (NSString*)subrole
|
|
{
|
|
if (!mGeckoAccessible)
|
|
return nil;
|
|
|
|
// XXX maybe we should cache the subrole.
|
|
nsAutoString xmlRoles;
|
|
|
|
// XXX we don't need all the attributes (see bug 771113)
|
|
nsCOMPtr<nsIPersistentProperties> attributes = mGeckoAccessible->Attributes();
|
|
if (attributes)
|
|
nsAccUtils::GetAccAttr(attributes, nsGkAtoms::xmlroles, xmlRoles);
|
|
|
|
nsWhitespaceTokenizer tokenizer(xmlRoles);
|
|
|
|
while (tokenizer.hasMoreTokens()) {
|
|
const nsDependentSubstring token(tokenizer.nextToken());
|
|
|
|
if (token.EqualsLiteral("banner"))
|
|
return @"AXLandmarkBanner";
|
|
|
|
if (token.EqualsLiteral("complementary"))
|
|
return @"AXLandmarkComplementary";
|
|
|
|
if (token.EqualsLiteral("contentinfo"))
|
|
return @"AXLandmarkContentInfo";
|
|
|
|
if (token.EqualsLiteral("main"))
|
|
return @"AXLandmarkMain";
|
|
|
|
if (token.EqualsLiteral("navigation"))
|
|
return @"AXLandmarkNavigation";
|
|
|
|
if (token.EqualsLiteral("search"))
|
|
return @"AXLandmarkSearch";
|
|
}
|
|
|
|
switch (mRole) {
|
|
case roles::LIST:
|
|
return @"AXContentList"; // 10.6+ NSAccessibilityContentListSubrole;
|
|
|
|
case roles::DEFINITION_LIST:
|
|
return @"AXDefinitionList"; // 10.6+ NSAccessibilityDefinitionListSubrole;
|
|
|
|
case roles::TERM:
|
|
return @"AXTerm";
|
|
|
|
case roles::DEFINITION:
|
|
return @"AXDefinition";
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return nil;
|
|
}
|
|
|
|
- (NSString*)roleDescription
|
|
{
|
|
if (mRole == roles::DOCUMENT)
|
|
return utils::LocalizedString(NS_LITERAL_STRING("htmlContent"));
|
|
|
|
NSString* subrole = [self subrole];
|
|
|
|
if ((mRole == roles::LISTITEM) && [subrole isEqualToString:@"AXTerm"])
|
|
return utils::LocalizedString(NS_LITERAL_STRING("term"));
|
|
if ((mRole == roles::PARAGRAPH) && [subrole isEqualToString:@"AXDefinition"])
|
|
return utils::LocalizedString(NS_LITERAL_STRING("definition"));
|
|
|
|
NSString* role = [self role];
|
|
|
|
// the WAI-ARIA Landmarks
|
|
if ([role isEqualToString:NSAccessibilityGroupRole]) {
|
|
if ([subrole isEqualToString:@"AXLandmarkBanner"])
|
|
return utils::LocalizedString(NS_LITERAL_STRING("banner"));
|
|
if ([subrole isEqualToString:@"AXLandmarkComplementary"])
|
|
return utils::LocalizedString(NS_LITERAL_STRING("complementary"));
|
|
if ([subrole isEqualToString:@"AXLandmarkContentInfo"])
|
|
return utils::LocalizedString(NS_LITERAL_STRING("content"));
|
|
if ([subrole isEqualToString:@"AXLandmarkMain"])
|
|
return utils::LocalizedString(NS_LITERAL_STRING("main"));
|
|
if ([subrole isEqualToString:@"AXLandmarkNavigation"])
|
|
return utils::LocalizedString(NS_LITERAL_STRING("navigation"));
|
|
if ([subrole isEqualToString:@"AXLandmarkSearch"])
|
|
return utils::LocalizedString(NS_LITERAL_STRING("search"));
|
|
}
|
|
|
|
return NSAccessibilityRoleDescription(role, subrole);
|
|
}
|
|
|
|
- (NSString*)title
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
|
|
|
nsAutoString title;
|
|
mGeckoAccessible->Name(title);
|
|
return nsCocoaUtils::ToNSString(title);
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
|
}
|
|
|
|
- (id)value
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
|
|
|
nsAutoString value;
|
|
mGeckoAccessible->GetValue (value);
|
|
return value.IsEmpty() ? nil : [NSString stringWithCharacters:reinterpret_cast<const unichar*>(value.BeginReading())
|
|
length:value.Length()];
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
|
}
|
|
|
|
- (void)valueDidChange
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
|
|
|
|
#ifdef DEBUG_hakan
|
|
NSLog(@"%@'s value changed!", self);
|
|
#endif
|
|
// sending out a notification is expensive, so we don't do it other than for really important objects,
|
|
// like mozTextAccessible.
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK;
|
|
}
|
|
|
|
- (void)selectedTextDidChange
|
|
{
|
|
// Do nothing. mozTextAccessible will.
|
|
}
|
|
|
|
- (NSString*)customDescription
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
|
|
|
if (mGeckoAccessible->IsDefunct())
|
|
return nil;
|
|
|
|
nsAutoString desc;
|
|
mGeckoAccessible->Description(desc);
|
|
|
|
return nsCocoaUtils::ToNSString(desc);
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
|
}
|
|
|
|
- (NSString*)help
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
|
|
|
nsAutoString helpText;
|
|
mGeckoAccessible->GetHelp (helpText);
|
|
return helpText.IsEmpty() ? nil : [NSString stringWithCharacters:reinterpret_cast<const unichar*>(helpText.BeginReading())
|
|
length:helpText.Length()];
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
|
}
|
|
|
|
// objc-style description (from NSObject); not to be confused with the accessible description above.
|
|
- (NSString*)description
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
|
|
|
return [NSString stringWithFormat:@"(%p) %@", self, [self role]];
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
|
}
|
|
|
|
- (BOOL)isFocused
|
|
{
|
|
return FocusMgr()->IsFocused(mGeckoAccessible);
|
|
}
|
|
|
|
- (BOOL)canBeFocused
|
|
{
|
|
return mGeckoAccessible && (mGeckoAccessible->InteractiveState() & states::FOCUSABLE);
|
|
}
|
|
|
|
- (BOOL)focus
|
|
{
|
|
if (!mGeckoAccessible)
|
|
return NO;
|
|
|
|
nsresult rv = mGeckoAccessible->TakeFocus();
|
|
return NS_SUCCEEDED(rv);
|
|
}
|
|
|
|
- (BOOL)isEnabled
|
|
{
|
|
return mGeckoAccessible && ((mGeckoAccessible->InteractiveState() & states::UNAVAILABLE) == 0);
|
|
}
|
|
|
|
// The root accessible calls this when the focused node was
|
|
// changed to us.
|
|
- (void)didReceiveFocus
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
|
|
|
|
#ifdef DEBUG_hakan
|
|
NSLog (@"%@ received focus!", self);
|
|
#endif
|
|
NSAssert1(![self accessibilityIsIgnored], @"trying to set focus to ignored element! (%@)", self);
|
|
NSAccessibilityPostNotification(GetObjectOrRepresentedView(self),
|
|
NSAccessibilityFocusedUIElementChangedNotification);
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK;
|
|
}
|
|
|
|
- (NSWindow*)window
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
|
|
|
AccessibleWrap* accWrap = static_cast<AccessibleWrap*>(mGeckoAccessible);
|
|
|
|
// Get a pointer to the native window (NSWindow) we reside in.
|
|
NSWindow *nativeWindow = nil;
|
|
DocAccessible* docAcc = accWrap->Document();
|
|
if (docAcc)
|
|
nativeWindow = static_cast<NSWindow*>(docAcc->GetNativeWindow());
|
|
|
|
NSAssert1(nativeWindow, @"Could not get native window for %@", self);
|
|
return nativeWindow;
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
|
}
|
|
|
|
- (void)invalidateChildren
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
|
|
|
|
// make room for new children
|
|
[mChildren release];
|
|
mChildren = nil;
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK;
|
|
}
|
|
|
|
- (void)appendChild:(Accessible*)aAccessible
|
|
{
|
|
// if mChildren is nil, then we don't even need to bother
|
|
if (!mChildren)
|
|
return;
|
|
|
|
mozAccessible *curNative = GetNativeFromGeckoAccessible(aAccessible);
|
|
if (curNative)
|
|
[mChildren addObject:GetObjectOrRepresentedView(curNative)];
|
|
}
|
|
|
|
- (void)expire
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
|
|
|
|
[self invalidateChildren];
|
|
|
|
mGeckoAccessible = nullptr;
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK;
|
|
}
|
|
|
|
- (BOOL)isExpired
|
|
{
|
|
return !mGeckoAccessible;
|
|
}
|
|
|
|
#pragma mark -
|
|
#pragma mark Debug methods
|
|
#pragma mark -
|
|
|
|
#ifdef DEBUG
|
|
|
|
// will check that our children actually reference us as their
|
|
// parent.
|
|
- (void)sanityCheckChildren:(NSArray *)children
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
|
|
|
|
NSAssert(![self accessibilityIsIgnored], @"can't sanity check children of an ignored accessible!");
|
|
NSEnumerator *iter = [children objectEnumerator];
|
|
mozAccessible *curObj = nil;
|
|
|
|
NSLog(@"sanity checking %@", self);
|
|
|
|
while ((curObj = [iter nextObject])) {
|
|
id realSelf = GetObjectOrRepresentedView(self);
|
|
NSLog(@"checking %@", realSelf);
|
|
NSAssert2([curObj parent] == realSelf,
|
|
@"!!! %@ not returning %@ as AXParent, even though it is a AXChild of it!", curObj, realSelf);
|
|
}
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK;
|
|
}
|
|
|
|
- (void)sanityCheckChildren
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
|
|
|
|
[self sanityCheckChildren:[self children]];
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK;
|
|
}
|
|
|
|
- (void)printHierarchy
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
|
|
|
|
[self printHierarchyWithLevel:0];
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK;
|
|
}
|
|
|
|
- (void)printHierarchyWithLevel:(unsigned)level
|
|
{
|
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
|
|
|
|
NSAssert(![self isExpired], @"!!! trying to print hierarchy of expired object!");
|
|
|
|
// print this node
|
|
NSMutableString *indent = [NSMutableString stringWithCapacity:level];
|
|
unsigned i=0;
|
|
for (;i<level;i++)
|
|
[indent appendString:@" "];
|
|
|
|
NSLog (@"%@(#%i) %@", indent, level, self);
|
|
|
|
// use |children| method to make sure our children are lazily fetched first.
|
|
NSArray *children = [self children];
|
|
if (!children)
|
|
return;
|
|
|
|
if (![self accessibilityIsIgnored])
|
|
[self sanityCheckChildren];
|
|
|
|
NSEnumerator *iter = [children objectEnumerator];
|
|
mozAccessible *object = nil;
|
|
|
|
while (iter && (object = [iter nextObject]))
|
|
// print every child node's subtree, increasing the indenting
|
|
// by two for every level.
|
|
[object printHierarchyWithLevel:(level+1)];
|
|
|
|
NS_OBJC_END_TRY_ABORT_BLOCK;
|
|
}
|
|
|
|
#endif /* DEBUG */
|
|
|
|
@end
|