Accessibility/NewArchitecture: Difference between revisions
(→xpcom) |
|||
| Line 123: | Line 123: | ||
NSAccessibility protocol implementation. | NSAccessibility protocol implementation. | ||
==xpcom== | =='xpcom' folder== | ||
Classes are prefixed by 'xp'. Each xp class holds weak pointer to internal accessible object. All xp objects are contained in hash, when xp object is requested for internal object then hash is checked and new one is created if it doesn't have existing object. The xp objects creation is based on checking the supported interface (see Accessible downcasting methods). | |||
===accessible objects=== | |||
<pre> | <pre> | ||
| Line 178: | Line 178: | ||
</pre> | </pre> | ||
===relations=== | ===accessible relations=== | ||
<pre> | <pre> | ||
Revision as of 16:47, 15 March 2011
Summary
The page describes proposed Gecko a11y architectural changes.
Folders
- build - accessibility service factory
- idl
- ia2 - IAccessible2 interfaces
- msaa - ISimpleDOM interfaces
- xpcom - XPCOM interfaces
- public - exported a11y headers
- src
- base - common files
- generic - generic accessible classes
- html - HTML accessible classes
- xul - XUL accessible classes
- xforms - XForms accessible classes
- atk - ATK implementation (Linux)
- windows - MSAA/IAccessible2/SimpleDOM interfaces implementation (Windows)
- mac - NSAccessibility protocol implementation (OS X)
- others - other platforms
- xpcom - XPCOM interfaces implementation
- tests
- crashtests
- mochitest
'public' folder
- No excess dependences. All inline methods that requires extra includes are prototyped here and defined in implementation classes.
- Defined inside mozilla::a11y namespace
accessible objects
/** * The existing base/nsAccessNode. */ class DOMNodeAccessible;
/**
* The existing base/nsAccessible.
*/
class Accessible : public DOMNodeAccessible {};
/**
* Existing html/nsHyperTextAccessible.
*/
class HyperTextAccessible : public Accessible {};
/**
* Existing base/nsDocAccessible.
*/
class DocAccessible : public HyperTextAccessible {};
/**
* Existing base/nsRootAccessible.
*/
class RootAccessible : public DocAccessible {};
/**
* Existing base/nsApplicationAccessible.
*/
class AppAccessible : public Accessible {};
/**
* New interface classes based on nsIAccessibleTable and nsIAccessibleTableCell.
*/
class TableAccessible : public Accessible {};
class TableCellAccessible : public HyperTextAccessible {};
accessibility service
/**
* Existing nsDocAccManager and nsAccessibilityService
*/
class DocAccessibleMgr {};
class AccService : public DocAccessibleMgr {};
src/generic folder
class GenericAccessible : public Accessible; (nsAccessible)
class ApplicationAccessible : public Accessible; (nsApplicationAccessible)
class ARIAGridAccessible (nsARIAGridAccessible)
class DocAccessible : public GenericAccessible, DocAccessible; (nsDocAccessible)
class HyperTextAccessible
src platforms folders
Every platform defines AccServiceWrap used for initialization (currently done by nsAccessNodeWrap classes).
class AccServiceWrap : public AccService {};
atk
windows
simple DOM
ISimpleDOM interfaces implementation.
MSAA
IAccessible interface implementation.
IAccessible2
IAccessible2 interfaces implementation.
mac
NSAccessibility protocol implementation.
'xpcom' folder
Classes are prefixed by 'xp'. Each xp class holds weak pointer to internal accessible object. All xp objects are contained in hash, when xp object is requested for internal object then hash is checked and new one is created if it doesn't have existing object. The xp objects creation is based on checking the supported interface (see Accessible downcasting methods).
accessible objects
template<class T>
class xpTAccessible : public nsIAccessible,
public nsIHyperlink
{
private:
T* mInternalObj;
};
typedef xpTAccessible<Accessible> xpAccessible;
template<class T>
class xpTHyperTextAccessible : public xpTAccessible<T>,
public nsIAccessibleText,
public nsIAccessibleEdtiableText,
public nsIAccessibleHypertext
{};
typedef xpTHyperTextAccessible<HyperTextAccessible> xpHyperTextAccessible;
class xpImageAccessible : public xpTAccessible<ImageAccessible>,
public nsIAccessibleImage
class xpTableAccessible : public xpTAccessible<TableAccessible>,
public nsIAccessibleTable
{};
class xpTableCellAccessible : public xpTHyperTextAccessible<TableCellAccessible>,
public nsIAccessibleTableCell
{};
class xpDocumentAccessible : public xpTHyperTextAccessible<DocAccessible>,
public nsIAccessibleDocument
{};
class xpApplicationAccessible : public xpTAccessible<AppAccessible>,
public nsIApplicationAccessible
{};
accessible relations
class xpRelation : public nsIAccessibleRelation
{};
accessibility service
class xpAccService : public AccServiceWrap,
public nsIAccessibleProvider
{};