mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-01 06:35:42 +00:00
3ceb752585
--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
918 lines
26 KiB
JavaScript
918 lines
26 KiB
JavaScript
/* 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/. */
|
|
|
|
'use strict';
|
|
|
|
const Cu = Components.utils;
|
|
const Cc = Components.classes;
|
|
const Ci = Components.interfaces;
|
|
|
|
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
|
XPCOMUtils.defineLazyModuleGetter(this, 'Services',
|
|
'resource://gre/modules/Services.jsm');
|
|
XPCOMUtils.defineLazyModuleGetter(this, 'Rect',
|
|
'resource://gre/modules/Geometry.jsm');
|
|
XPCOMUtils.defineLazyModuleGetter(this, 'Roles',
|
|
'resource://gre/modules/accessibility/Constants.jsm');
|
|
XPCOMUtils.defineLazyModuleGetter(this, 'Events',
|
|
'resource://gre/modules/accessibility/Constants.jsm');
|
|
XPCOMUtils.defineLazyModuleGetter(this, 'Relations',
|
|
'resource://gre/modules/accessibility/Constants.jsm');
|
|
XPCOMUtils.defineLazyModuleGetter(this, 'States',
|
|
'resource://gre/modules/accessibility/Constants.jsm');
|
|
|
|
this.EXPORTED_SYMBOLS = ['Utils', 'Logger', 'PivotContext', 'PrefCache', 'SettingCache'];
|
|
|
|
this.Utils = {
|
|
_buildAppMap: {
|
|
'{3c2e2abc-06d4-11e1-ac3b-374f68613e61}': 'b2g',
|
|
'{ec8030f7-c20a-464f-9b0e-13a3a9e97384}': 'browser',
|
|
'{aa3c5121-dab2-40e2-81ca-7ea25febc110}': 'mobile/android',
|
|
'{a23983c0-fd0e-11dc-95ff-0800200c9a66}': 'mobile/xul'
|
|
},
|
|
|
|
init: function Utils_init(aWindow) {
|
|
if (this._win)
|
|
// XXX: only supports attaching to one window now.
|
|
throw new Error('Only one top-level window could used with AccessFu');
|
|
|
|
this._win = Cu.getWeakReference(aWindow);
|
|
},
|
|
|
|
uninit: function Utils_uninit() {
|
|
if (!this._win) {
|
|
return;
|
|
}
|
|
delete this._win;
|
|
},
|
|
|
|
get win() {
|
|
if (!this._win) {
|
|
return null;
|
|
}
|
|
return this._win.get();
|
|
},
|
|
|
|
get winUtils() {
|
|
let win = this.win;
|
|
if (!win) {
|
|
return null;
|
|
}
|
|
return win.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(
|
|
Ci.nsIDOMWindowUtils);
|
|
},
|
|
|
|
get AccRetrieval() {
|
|
if (!this._AccRetrieval) {
|
|
this._AccRetrieval = Cc['@mozilla.org/accessibleRetrieval;1'].
|
|
getService(Ci.nsIAccessibleRetrieval);
|
|
}
|
|
|
|
return this._AccRetrieval;
|
|
},
|
|
|
|
set MozBuildApp(value) {
|
|
this._buildApp = value;
|
|
},
|
|
|
|
get MozBuildApp() {
|
|
if (!this._buildApp)
|
|
this._buildApp = this._buildAppMap[Services.appinfo.ID];
|
|
return this._buildApp;
|
|
},
|
|
|
|
get OS() {
|
|
if (!this._OS)
|
|
this._OS = Services.appinfo.OS;
|
|
return this._OS;
|
|
},
|
|
|
|
get widgetToolkit() {
|
|
if (!this._widgetToolkit)
|
|
this._widgetToolkit = Services.appinfo.widgetToolkit;
|
|
return this._widgetToolkit;
|
|
},
|
|
|
|
get ScriptName() {
|
|
if (!this._ScriptName)
|
|
this._ScriptName =
|
|
(Services.appinfo.processType == 2) ? 'AccessFuContent' : 'AccessFu';
|
|
return this._ScriptName;
|
|
},
|
|
|
|
get AndroidSdkVersion() {
|
|
if (!this._AndroidSdkVersion) {
|
|
if (Services.appinfo.OS == 'Android') {
|
|
this._AndroidSdkVersion = Services.sysinfo.getPropertyAsInt32('version');
|
|
} else {
|
|
// Most useful in desktop debugging.
|
|
this._AndroidSdkVersion = 16;
|
|
}
|
|
}
|
|
return this._AndroidSdkVersion;
|
|
},
|
|
|
|
set AndroidSdkVersion(value) {
|
|
// When we want to mimic another version.
|
|
this._AndroidSdkVersion = value;
|
|
},
|
|
|
|
get BrowserApp() {
|
|
if (!this.win) {
|
|
return null;
|
|
}
|
|
switch (this.MozBuildApp) {
|
|
case 'mobile/android':
|
|
return this.win.BrowserApp;
|
|
case 'browser':
|
|
return this.win.gBrowser;
|
|
case 'b2g':
|
|
return this.win.shell;
|
|
default:
|
|
return null;
|
|
}
|
|
},
|
|
|
|
get CurrentBrowser() {
|
|
if (!this.BrowserApp) {
|
|
return null;
|
|
}
|
|
if (this.MozBuildApp == 'b2g')
|
|
return this.BrowserApp.contentBrowser;
|
|
return this.BrowserApp.selectedBrowser;
|
|
},
|
|
|
|
get CurrentContentDoc() {
|
|
let browser = this.CurrentBrowser;
|
|
return browser ? browser.contentDocument : null;
|
|
},
|
|
|
|
get AllMessageManagers() {
|
|
let messageManagers = [];
|
|
|
|
function collectLeafMessageManagers(mm) {
|
|
for (let i = 0; i < mm.childCount; i++) {
|
|
let childMM = mm.getChildAt(i);
|
|
|
|
if ("sendAsyncMessage" in childMM) {
|
|
messageManagers.push(childMM);
|
|
} else {
|
|
collectLeafMessageManagers(childMM);
|
|
}
|
|
}
|
|
}
|
|
|
|
collectLeafMessageManagers(this.win.messageManager);
|
|
|
|
let document = this.CurrentContentDoc;
|
|
|
|
if (document) {
|
|
let remoteframes = document.querySelectorAll('iframe');
|
|
|
|
for (let i = 0; i < remoteframes.length; ++i) {
|
|
let mm = this.getMessageManager(remoteframes[i]);
|
|
if (mm) {
|
|
messageManagers.push(mm);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
return messageManagers;
|
|
},
|
|
|
|
get isContentProcess() {
|
|
delete this.isContentProcess;
|
|
this.isContentProcess =
|
|
Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_CONTENT;
|
|
return this.isContentProcess;
|
|
},
|
|
|
|
get stringBundle() {
|
|
delete this.stringBundle;
|
|
this.stringBundle = Services.strings.createBundle(
|
|
'chrome://global/locale/AccessFu.properties');
|
|
return this.stringBundle;
|
|
},
|
|
|
|
getMessageManager: function getMessageManager(aBrowser) {
|
|
try {
|
|
return aBrowser.QueryInterface(Ci.nsIFrameLoaderOwner).
|
|
frameLoader.messageManager;
|
|
} catch (x) {
|
|
return null;
|
|
}
|
|
},
|
|
|
|
getViewport: function getViewport(aWindow) {
|
|
switch (this.MozBuildApp) {
|
|
case 'mobile/android':
|
|
return aWindow.BrowserApp.selectedTab.getViewport();
|
|
default:
|
|
return null;
|
|
}
|
|
},
|
|
|
|
getState: function getState(aAccessibleOrEvent) {
|
|
if (aAccessibleOrEvent instanceof Ci.nsIAccessibleStateChangeEvent) {
|
|
return new State(
|
|
aAccessibleOrEvent.isExtraState ? 0 : aAccessibleOrEvent.state,
|
|
aAccessibleOrEvent.isExtraState ? aAccessibleOrEvent.state : 0);
|
|
} else {
|
|
let state = {};
|
|
let extState = {};
|
|
aAccessibleOrEvent.getState(state, extState);
|
|
return new State(state.value, extState.value);
|
|
}
|
|
},
|
|
|
|
getAttributes: function getAttributes(aAccessible) {
|
|
let attributes = {};
|
|
|
|
if (aAccessible && aAccessible.attributes) {
|
|
let attributesEnum = aAccessible.attributes.enumerate();
|
|
|
|
// Populate |attributes| object with |aAccessible|'s attribute key-value
|
|
// pairs.
|
|
while (attributesEnum.hasMoreElements()) {
|
|
let attribute = attributesEnum.getNext().QueryInterface(
|
|
Ci.nsIPropertyElement);
|
|
attributes[attribute.key] = attribute.value;
|
|
}
|
|
}
|
|
|
|
return attributes;
|
|
},
|
|
|
|
getVirtualCursor: function getVirtualCursor(aDocument) {
|
|
let doc = (aDocument instanceof Ci.nsIAccessible) ? aDocument :
|
|
this.AccRetrieval.getAccessibleFor(aDocument);
|
|
|
|
return doc.QueryInterface(Ci.nsIAccessibleDocument).virtualCursor;
|
|
},
|
|
|
|
getBounds: function getBounds(aAccessible) {
|
|
let objX = {}, objY = {}, objW = {}, objH = {};
|
|
aAccessible.getBounds(objX, objY, objW, objH);
|
|
return new Rect(objX.value, objY.value, objW.value, objH.value);
|
|
},
|
|
|
|
getTextBounds: function getTextBounds(aAccessible, aStart, aEnd) {
|
|
let accText = aAccessible.QueryInterface(Ci.nsIAccessibleText);
|
|
let objX = {}, objY = {}, objW = {}, objH = {};
|
|
accText.getRangeExtents(aStart, aEnd, objX, objY, objW, objH,
|
|
Ci.nsIAccessibleCoordinateType.COORDTYPE_SCREEN_RELATIVE);
|
|
return new Rect(objX.value, objY.value, objW.value, objH.value);
|
|
},
|
|
|
|
/**
|
|
* Get current display DPI.
|
|
*/
|
|
get dpi() {
|
|
delete this.dpi;
|
|
this.dpi = this.winUtils.displayDPI;
|
|
return this.dpi;
|
|
},
|
|
|
|
isInSubtree: function isInSubtree(aAccessible, aSubTreeRoot) {
|
|
let acc = aAccessible;
|
|
while (acc) {
|
|
if (acc == aSubTreeRoot) {
|
|
return true;
|
|
}
|
|
|
|
try {
|
|
acc = acc.parent;
|
|
} catch (x) {
|
|
Logger.debug('Failed to get parent:', x);
|
|
acc = null;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
},
|
|
|
|
inHiddenSubtree: function inHiddenSubtree(aAccessible) {
|
|
for (let acc=aAccessible; acc; acc=acc.parent) {
|
|
let hidden = Utils.getAttributes(acc).hidden;
|
|
if (hidden && JSON.parse(hidden)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
},
|
|
|
|
isAliveAndVisible: function isAliveAndVisible(aAccessible, aIsOnScreen) {
|
|
if (!aAccessible) {
|
|
return false;
|
|
}
|
|
|
|
try {
|
|
let state = this.getState(aAccessible);
|
|
if (state.contains(States.DEFUNCT) || state.contains(States.INVISIBLE) ||
|
|
(aIsOnScreen && state.contains(States.OFFSCREEN)) ||
|
|
Utils.inHiddenSubtree(aAccessible)) {
|
|
return false;
|
|
}
|
|
} catch (x) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
},
|
|
|
|
matchAttributeValue: function matchAttributeValue(aAttributeValue, values) {
|
|
let attrSet = new Set(aAttributeValue.split(' '));
|
|
for (let value of values) {
|
|
if (attrSet.has(value)) {
|
|
return value;
|
|
}
|
|
}
|
|
},
|
|
|
|
getLandmarkName: function getLandmarkName(aAccessible) {
|
|
const landmarks = [
|
|
'banner',
|
|
'complementary',
|
|
'contentinfo',
|
|
'main',
|
|
'navigation',
|
|
'search'
|
|
];
|
|
let roles = this.getAttributes(aAccessible)['xml-roles'];
|
|
if (!roles) {
|
|
return;
|
|
}
|
|
|
|
// Looking up a role that would match a landmark.
|
|
return this.matchAttributeValue(roles, landmarks);
|
|
},
|
|
|
|
getEmbeddedControl: function getEmbeddedControl(aLabel) {
|
|
if (aLabel) {
|
|
let relation = aLabel.getRelationByType(Relations.LABEL_FOR);
|
|
for (let i = 0; i < relation.targetsCount; i++) {
|
|
let target = relation.getTarget(i);
|
|
if (target.parent === aLabel) {
|
|
return target;
|
|
}
|
|
}
|
|
}
|
|
|
|
return null;
|
|
},
|
|
|
|
isListItemDecorator: function isListItemDecorator(aStaticText,
|
|
aExcludeOrdered) {
|
|
let parent = aStaticText.parent;
|
|
if (aExcludeOrdered && parent.parent.DOMNode.nodeName === 'OL') {
|
|
return false;
|
|
}
|
|
|
|
return parent.role === Roles.LISTITEM && parent.childCount > 1 &&
|
|
aStaticText.indexInParent === 0;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* State object used internally to process accessible's states.
|
|
* @param {Number} aBase Base state.
|
|
* @param {Number} aExtended Extended state.
|
|
*/
|
|
function State(aBase, aExtended) {
|
|
this.base = aBase;
|
|
this.extended = aExtended;
|
|
}
|
|
|
|
State.prototype = {
|
|
contains: function State_contains(other) {
|
|
return !!(this.base & other.base || this.extended & other.extended);
|
|
},
|
|
toString: function State_toString() {
|
|
let stateStrings = Utils.AccRetrieval.
|
|
getStringStates(this.base, this.extended);
|
|
let statesArray = new Array(stateStrings.length);
|
|
for (let i = 0; i < statesArray.length; i++) {
|
|
statesArray[i] = stateStrings.item(i);
|
|
}
|
|
return '[' + statesArray.join(', ') + ']';
|
|
}
|
|
};
|
|
|
|
this.Logger = {
|
|
DEBUG: 0,
|
|
INFO: 1,
|
|
WARNING: 2,
|
|
ERROR: 3,
|
|
_LEVEL_NAMES: ['DEBUG', 'INFO', 'WARNING', 'ERROR'],
|
|
|
|
logLevel: 1, // INFO;
|
|
|
|
test: false,
|
|
|
|
log: function log(aLogLevel) {
|
|
if (aLogLevel < this.logLevel)
|
|
return;
|
|
|
|
let args = Array.prototype.slice.call(arguments, 1);
|
|
let message = (typeof(args[0]) === 'function' ? args[0]() : args).join(' ');
|
|
message = '[' + Utils.ScriptName + '] ' + this._LEVEL_NAMES[aLogLevel] +
|
|
' ' + message + '\n';
|
|
dump(message);
|
|
// Note: used for testing purposes. If |this.test| is true, also log to
|
|
// the console service.
|
|
if (this.test) {
|
|
try {
|
|
Services.console.logStringMessage(message);
|
|
} catch (ex) {
|
|
// There was an exception logging to the console service.
|
|
}
|
|
}
|
|
},
|
|
|
|
info: function info() {
|
|
this.log.apply(
|
|
this, [this.INFO].concat(Array.prototype.slice.call(arguments)));
|
|
},
|
|
|
|
debug: function debug() {
|
|
this.log.apply(
|
|
this, [this.DEBUG].concat(Array.prototype.slice.call(arguments)));
|
|
},
|
|
|
|
warning: function warning() {
|
|
this.log.apply(
|
|
this, [this.WARNING].concat(Array.prototype.slice.call(arguments)));
|
|
},
|
|
|
|
error: function error() {
|
|
this.log.apply(
|
|
this, [this.ERROR].concat(Array.prototype.slice.call(arguments)));
|
|
},
|
|
|
|
logException: function logException(
|
|
aException, aErrorMessage = 'An exception has occured') {
|
|
try {
|
|
let stackMessage = '';
|
|
if (aException.stack) {
|
|
stackMessage = ' ' + aException.stack.replace(/\n/g, '\n ');
|
|
} else if (aException.location) {
|
|
let frame = aException.location;
|
|
let stackLines = [];
|
|
while (frame && frame.lineNumber) {
|
|
stackLines.push(
|
|
' ' + frame.name + '@' + frame.filename + ':' + frame.lineNumber);
|
|
frame = frame.caller;
|
|
}
|
|
stackMessage = stackLines.join('\n');
|
|
} else {
|
|
stackMessage = '(' + aException.fileName + ':' + aException.lineNumber + ')';
|
|
}
|
|
this.error(aErrorMessage + ':\n ' +
|
|
aException.message + '\n' +
|
|
stackMessage);
|
|
} catch (x) {
|
|
this.error(x);
|
|
}
|
|
},
|
|
|
|
accessibleToString: function accessibleToString(aAccessible) {
|
|
let str = '[ defunct ]';
|
|
try {
|
|
str = '[ ' + Utils.AccRetrieval.getStringRole(aAccessible.role) +
|
|
' | ' + aAccessible.name + ' ]';
|
|
} catch (x) {
|
|
}
|
|
|
|
return str;
|
|
},
|
|
|
|
eventToString: function eventToString(aEvent) {
|
|
let str = Utils.AccRetrieval.getStringEventType(aEvent.eventType);
|
|
if (aEvent.eventType == Events.STATE_CHANGE) {
|
|
let event = aEvent.QueryInterface(Ci.nsIAccessibleStateChangeEvent);
|
|
let stateStrings = event.isExtraState ?
|
|
Utils.AccRetrieval.getStringStates(0, event.state) :
|
|
Utils.AccRetrieval.getStringStates(event.state, 0);
|
|
str += ' (' + stateStrings.item(0) + ')';
|
|
}
|
|
|
|
if (aEvent.eventType == Events.VIRTUALCURSOR_CHANGED) {
|
|
let event = aEvent.QueryInterface(
|
|
Ci.nsIAccessibleVirtualCursorChangeEvent);
|
|
let pivot = aEvent.accessible.QueryInterface(
|
|
Ci.nsIAccessibleDocument).virtualCursor;
|
|
str += ' (' + this.accessibleToString(event.oldAccessible) + ' -> ' +
|
|
this.accessibleToString(pivot.position) + ')';
|
|
}
|
|
|
|
return str;
|
|
},
|
|
|
|
statesToString: function statesToString(aAccessible) {
|
|
return Utils.getState(aAccessible).toString();
|
|
},
|
|
|
|
dumpTree: function dumpTree(aLogLevel, aRootAccessible) {
|
|
if (aLogLevel < this.logLevel)
|
|
return;
|
|
|
|
this._dumpTreeInternal(aLogLevel, aRootAccessible, 0);
|
|
},
|
|
|
|
_dumpTreeInternal: function _dumpTreeInternal(aLogLevel, aAccessible, aIndent) {
|
|
let indentStr = '';
|
|
for (var i=0; i < aIndent; i++)
|
|
indentStr += ' ';
|
|
this.log(aLogLevel, indentStr,
|
|
this.accessibleToString(aAccessible),
|
|
'(' + this.statesToString(aAccessible) + ')');
|
|
for (var i=0; i < aAccessible.childCount; i++)
|
|
this._dumpTreeInternal(aLogLevel, aAccessible.getChildAt(i), aIndent + 1);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* PivotContext: An object that generates and caches context information
|
|
* for a given accessible and its relationship with another accessible.
|
|
*
|
|
* If the given accessible is a label for a nested control, then this
|
|
* context will represent the nested control instead of the label.
|
|
* With the exception of bounds calculation, which will use the containing
|
|
* label. In this case the |accessible| field would be the embedded control,
|
|
* and the |accessibleForBounds| field would be the label.
|
|
*/
|
|
this.PivotContext = function PivotContext(aAccessible, aOldAccessible,
|
|
aStartOffset, aEndOffset, aIgnoreAncestry = false,
|
|
aIncludeInvisible = false) {
|
|
this._accessible = aAccessible;
|
|
this._nestedControl = Utils.getEmbeddedControl(aAccessible);
|
|
this._oldAccessible =
|
|
this._isDefunct(aOldAccessible) ? null : aOldAccessible;
|
|
this.startOffset = aStartOffset;
|
|
this.endOffset = aEndOffset;
|
|
this._ignoreAncestry = aIgnoreAncestry;
|
|
this._includeInvisible = aIncludeInvisible;
|
|
}
|
|
|
|
PivotContext.prototype = {
|
|
get accessible() {
|
|
// If the current pivot accessible has a nested control,
|
|
// make this context use it publicly.
|
|
return this._nestedControl || this._accessible;
|
|
},
|
|
|
|
get oldAccessible() {
|
|
return this._oldAccessible;
|
|
},
|
|
|
|
get isNestedControl() {
|
|
return !!this._nestedControl;
|
|
},
|
|
|
|
get accessibleForBounds() {
|
|
return this._accessible;
|
|
},
|
|
|
|
get textAndAdjustedOffsets() {
|
|
if (this.startOffset === -1 && this.endOffset === -1) {
|
|
return null;
|
|
}
|
|
|
|
if (!this._textAndAdjustedOffsets) {
|
|
let result = {startOffset: this.startOffset,
|
|
endOffset: this.endOffset,
|
|
text: this._accessible.QueryInterface(Ci.nsIAccessibleText).
|
|
getText(0, Ci.nsIAccessibleText.TEXT_OFFSET_END_OF_TEXT)};
|
|
let hypertextAcc = this._accessible.QueryInterface(Ci.nsIAccessibleHyperText);
|
|
|
|
// Iterate through the links in backwards order so text replacements don't
|
|
// affect the offsets of links yet to be processed.
|
|
for (let i = hypertextAcc.linkCount - 1; i >= 0; i--) {
|
|
let link = hypertextAcc.getLinkAt(i);
|
|
let linkText = '';
|
|
if (link instanceof Ci.nsIAccessibleText) {
|
|
linkText = link.QueryInterface(Ci.nsIAccessibleText).
|
|
getText(0, Ci.nsIAccessibleText.TEXT_OFFSET_END_OF_TEXT);
|
|
}
|
|
|
|
let start = link.startIndex;
|
|
let end = link.endIndex;
|
|
for (let offset of ['startOffset', 'endOffset']) {
|
|
if (this[offset] >= end) {
|
|
result[offset] += linkText.length - (end - start);
|
|
}
|
|
}
|
|
result.text = result.text.substring(0, start) + linkText +
|
|
result.text.substring(end);
|
|
}
|
|
|
|
this._textAndAdjustedOffsets = result;
|
|
}
|
|
|
|
return this._textAndAdjustedOffsets;
|
|
},
|
|
|
|
/**
|
|
* Get a list of |aAccessible|'s ancestry up to the root.
|
|
* @param {nsIAccessible} aAccessible.
|
|
* @return {Array} Ancestry list.
|
|
*/
|
|
_getAncestry: function _getAncestry(aAccessible) {
|
|
let ancestry = [];
|
|
let parent = aAccessible;
|
|
try {
|
|
while (parent && (parent = parent.parent)) {
|
|
ancestry.push(parent);
|
|
}
|
|
} catch (x) {
|
|
// A defunct accessible will raise an exception geting parent.
|
|
Logger.debug('Failed to get parent:', x);
|
|
}
|
|
return ancestry.reverse();
|
|
},
|
|
|
|
/**
|
|
* A list of the old accessible's ancestry.
|
|
*/
|
|
get oldAncestry() {
|
|
if (!this._oldAncestry) {
|
|
if (!this._oldAccessible || this._ignoreAncestry) {
|
|
this._oldAncestry = [];
|
|
} else {
|
|
this._oldAncestry = this._getAncestry(this._oldAccessible);
|
|
this._oldAncestry.push(this._oldAccessible);
|
|
}
|
|
}
|
|
return this._oldAncestry;
|
|
},
|
|
|
|
/**
|
|
* A list of the current accessible's ancestry.
|
|
*/
|
|
get currentAncestry() {
|
|
if (!this._currentAncestry) {
|
|
this._currentAncestry = this._ignoreAncestry ? [] :
|
|
this._getAncestry(this.accessible);
|
|
}
|
|
return this._currentAncestry;
|
|
},
|
|
|
|
/*
|
|
* This is a list of the accessible's ancestry up to the common ancestor
|
|
* of the accessible and the old accessible. It is useful for giving the
|
|
* user context as to where they are in the heirarchy.
|
|
*/
|
|
get newAncestry() {
|
|
if (!this._newAncestry) {
|
|
this._newAncestry = this._ignoreAncestry ? [] : [currentAncestor for (
|
|
[index, currentAncestor] of Iterator(this.currentAncestry)) if (
|
|
currentAncestor !== this.oldAncestry[index])];
|
|
}
|
|
return this._newAncestry;
|
|
},
|
|
|
|
/*
|
|
* Traverse the accessible's subtree in pre or post order.
|
|
* It only includes the accessible's visible chidren.
|
|
* Note: needSubtree is a function argument that can be used to determine
|
|
* whether aAccessible's subtree is required.
|
|
*/
|
|
_traverse: function _traverse(aAccessible, aPreorder, aStop) {
|
|
if (aStop && aStop(aAccessible)) {
|
|
return;
|
|
}
|
|
let child = aAccessible.firstChild;
|
|
while (child) {
|
|
let include;
|
|
if (this._includeInvisible) {
|
|
include = true;
|
|
} else {
|
|
include = !(Utils.getState(child).contains(States.INVISIBLE));
|
|
}
|
|
if (include) {
|
|
if (aPreorder) {
|
|
yield child;
|
|
[yield node for (node of this._traverse(child, aPreorder, aStop))];
|
|
} else {
|
|
[yield node for (node of this._traverse(child, aPreorder, aStop))];
|
|
yield child;
|
|
}
|
|
}
|
|
child = child.nextSibling;
|
|
}
|
|
},
|
|
|
|
/*
|
|
* A subtree generator function, used to generate a flattened
|
|
* list of the accessible's subtree in pre or post order.
|
|
* It only includes the accessible's visible chidren.
|
|
* @param {boolean} aPreorder A flag for traversal order. If true, traverse
|
|
* in preorder; if false, traverse in postorder.
|
|
* @param {function} aStop An optional function, indicating whether subtree
|
|
* traversal should stop.
|
|
*/
|
|
subtreeGenerator: function subtreeGenerator(aPreorder, aStop) {
|
|
return this._traverse(this.accessible, aPreorder, aStop);
|
|
},
|
|
|
|
getCellInfo: function getCellInfo(aAccessible) {
|
|
if (!this._cells) {
|
|
this._cells = new WeakMap();
|
|
}
|
|
|
|
let domNode = aAccessible.DOMNode;
|
|
if (this._cells.has(domNode)) {
|
|
return this._cells.get(domNode);
|
|
}
|
|
|
|
let cellInfo = {};
|
|
let getAccessibleCell = function getAccessibleCell(aAccessible) {
|
|
if (!aAccessible) {
|
|
return null;
|
|
}
|
|
if ([Roles.CELL, Roles.COLUMNHEADER, Roles.ROWHEADER].indexOf(
|
|
aAccessible.role) < 0) {
|
|
return null;
|
|
}
|
|
try {
|
|
return aAccessible.QueryInterface(Ci.nsIAccessibleTableCell);
|
|
} catch (x) {
|
|
Logger.logException(x);
|
|
return null;
|
|
}
|
|
};
|
|
let getHeaders = function getHeaders(aHeaderCells) {
|
|
let enumerator = aHeaderCells.enumerate();
|
|
while (enumerator.hasMoreElements()) {
|
|
yield enumerator.getNext().QueryInterface(Ci.nsIAccessible).name;
|
|
}
|
|
};
|
|
|
|
cellInfo.current = getAccessibleCell(aAccessible);
|
|
|
|
if (!cellInfo.current) {
|
|
Logger.warning(aAccessible,
|
|
'does not support nsIAccessibleTableCell interface.');
|
|
this._cells.set(domNode, null);
|
|
return null;
|
|
}
|
|
|
|
let table = cellInfo.current.table;
|
|
if (table.isProbablyForLayout()) {
|
|
this._cells.set(domNode, null);
|
|
return null;
|
|
}
|
|
|
|
cellInfo.previous = null;
|
|
let oldAncestry = this.oldAncestry.reverse();
|
|
let ancestor = oldAncestry.shift();
|
|
while (!cellInfo.previous && ancestor) {
|
|
let cell = getAccessibleCell(ancestor);
|
|
if (cell && cell.table === table) {
|
|
cellInfo.previous = cell;
|
|
}
|
|
ancestor = oldAncestry.shift();
|
|
}
|
|
|
|
if (cellInfo.previous) {
|
|
cellInfo.rowChanged = cellInfo.current.rowIndex !==
|
|
cellInfo.previous.rowIndex;
|
|
cellInfo.columnChanged = cellInfo.current.columnIndex !==
|
|
cellInfo.previous.columnIndex;
|
|
} else {
|
|
cellInfo.rowChanged = true;
|
|
cellInfo.columnChanged = true;
|
|
}
|
|
|
|
cellInfo.rowExtent = cellInfo.current.rowExtent;
|
|
cellInfo.columnExtent = cellInfo.current.columnExtent;
|
|
cellInfo.columnIndex = cellInfo.current.columnIndex;
|
|
cellInfo.rowIndex = cellInfo.current.rowIndex;
|
|
|
|
cellInfo.columnHeaders = [];
|
|
if (cellInfo.columnChanged && cellInfo.current.role !==
|
|
Roles.COLUMNHEADER) {
|
|
cellInfo.columnHeaders = [headers for (headers of getHeaders(
|
|
cellInfo.current.columnHeaderCells))];
|
|
}
|
|
cellInfo.rowHeaders = [];
|
|
if (cellInfo.rowChanged && cellInfo.current.role === Roles.CELL) {
|
|
cellInfo.rowHeaders = [headers for (headers of getHeaders(
|
|
cellInfo.current.rowHeaderCells))];
|
|
}
|
|
|
|
this._cells.set(domNode, cellInfo);
|
|
return cellInfo;
|
|
},
|
|
|
|
get bounds() {
|
|
if (!this._bounds) {
|
|
this._bounds = Utils.getBounds(this.accessibleForBounds);
|
|
}
|
|
|
|
return this._bounds.clone();
|
|
},
|
|
|
|
_isDefunct: function _isDefunct(aAccessible) {
|
|
try {
|
|
return Utils.getState(aAccessible).contains(States.DEFUNCT);
|
|
} catch (x) {
|
|
return true;
|
|
}
|
|
}
|
|
};
|
|
|
|
this.PrefCache = function PrefCache(aName, aCallback, aRunCallbackNow) {
|
|
this.name = aName;
|
|
this.callback = aCallback;
|
|
|
|
let branch = Services.prefs;
|
|
this.value = this._getValue(branch);
|
|
|
|
if (this.callback && aRunCallbackNow) {
|
|
try {
|
|
this.callback(this.name, this.value);
|
|
} catch (x) {
|
|
Logger.logException(x);
|
|
}
|
|
}
|
|
|
|
branch.addObserver(aName, this, true);
|
|
};
|
|
|
|
PrefCache.prototype = {
|
|
_getValue: function _getValue(aBranch) {
|
|
try {
|
|
if (!this.type) {
|
|
this.type = aBranch.getPrefType(this.name);
|
|
}
|
|
switch (this.type) {
|
|
case Ci.nsIPrefBranch.PREF_STRING:
|
|
return aBranch.getCharPref(this.name);
|
|
case Ci.nsIPrefBranch.PREF_INT:
|
|
return aBranch.getIntPref(this.name);
|
|
case Ci.nsIPrefBranch.PREF_BOOL:
|
|
return aBranch.getBoolPref(this.name);
|
|
default:
|
|
return null;
|
|
}
|
|
} catch (x) {
|
|
// Pref does not exist.
|
|
return null;
|
|
}
|
|
},
|
|
|
|
observe: function observe(aSubject, aTopic, aData) {
|
|
this.value = this._getValue(aSubject.QueryInterface(Ci.nsIPrefBranch));
|
|
if (this.callback) {
|
|
try {
|
|
this.callback(this.name, this.value);
|
|
} catch (x) {
|
|
Logger.logException(x);
|
|
}
|
|
}
|
|
},
|
|
|
|
QueryInterface : XPCOMUtils.generateQI([Ci.nsIObserver,
|
|
Ci.nsISupportsWeakReference])
|
|
};
|
|
|
|
this.SettingCache = function SettingCache(aName, aCallback, aOptions = {}) {
|
|
this.value = aOptions.defaultValue;
|
|
let runCallback = () => {
|
|
if (aCallback) {
|
|
aCallback(aName, this.value);
|
|
if (aOptions.callbackOnce) {
|
|
runCallback = () => {};
|
|
}
|
|
}
|
|
};
|
|
|
|
let settings = Utils.win.navigator.mozSettings;
|
|
if (!settings) {
|
|
if (aOptions.callbackNow) {
|
|
runCallback();
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
let lock = settings.createLock();
|
|
let req = lock.get(aName);
|
|
|
|
req.addEventListener('success', () => {
|
|
this.value = req.result[aName] == undefined ? aOptions.defaultValue : req.result[aName];
|
|
if (aOptions.callbackNow) {
|
|
runCallback();
|
|
}
|
|
});
|
|
|
|
settings.addObserver(aName,
|
|
(evt) => {
|
|
this.value = evt.settingValue;
|
|
runCallback();
|
|
});
|
|
};
|