Accessibility/NewArchitecture: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
Line 111: Line 111:


==windows==
==windows==
==simple DOM==
===simple DOM===
ISimpleDOM interfaces implementation.
 
===MSAA===
===MSAA===
IAccessible interface implementation.


===IAccessible2===
===IAccessible2===
IAccessible2 interfaces implementation.


==mac==
==mac==

Revision as of 16:40, 15 March 2011

Summary

The page describes proposed Gecko a11y architectural changes.

Folders

  1. build - accessibility service factory
  2. idl
    1. ia2 - IAccessible2 interfaces
    2. msaa - ISimpleDOM interfaces
    3. xpcom - XPCOM interfaces
  3. public - exported a11y headers
  4. src
    1. base - common files
    2. generic - generic accessible classes
    3. html - HTML accessible classes
    4. xul - XUL accessible classes
    5. xforms - XForms accessible classes
    6. atk - ATK implementation (Linux)
    7. windows - MSAA/IAccessible2/SimpleDOM interfaces implementation (Windows)
    8. mac - NSAccessibility protocol implementation (OS X)
    9. others - other platforms
    10. xpcom - XPCOM interfaces implementation
  5. tests
    1. crashtests
    2. mochitest

'public' folder

  1. No excess dependences. All inline methods that requires extra includes are prototyped here and defined in implementation classes.
  2. 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

accessible classes

Classes are prefixed by 'xp'.

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
{};

relations

class xpRelation : public nsIAccessibleRelation
{};

accessibility service

class xpAccService : public AccServiceWrap,
                     public nsIAccessibleProvider
{};