Accessibility/NewArchitecture: Difference between revisions

Jump to navigation Jump to search
Line 112: Line 112:


==windows==
==windows==
===simple DOM===
ISimpleDOM interfaces implementation.


===MSAA===
Each API has set of classes that implement certain interfaces. ISimpleDOM interfaces implementation classes are prefixed by 'isd'. IAccessible interface implementation class is prefixed by 'msaa'. IAccessble2 interface implementation classes are prefixed by 'ia2'.
IAccessible interface implementation.


===IAccessible2===
Each internal class that its windows object should implement specific set of interfaces is wrapped.
IAccessible2 interfaces implementation.
 
<pre>
class NativeAccessible
{
protected:
  DOMNodeAccessible* mGeckoAcc;
};
 
class sdnAccessible: public NativeAccessible,
                    public ISimpleDOMNode
{
public:
  // ISimpleDOMNode
};
 
hresult
sdnAccessible::sdnMethod()
{
  AccessNode* geckoAcc = mGeckoObj;
}
 
class msaaAccessible : public NativeAccessible,
                      public IAccessible
{
public:
  // IAccessible
};
 
hresult
ia2TableAccessible::IATableMethod()
{
  Accessible* geckoAcc = mGeckoObj->AsAccessible();
  geckoAcc->TableMethod();
  return S_OK;
}
 
class ia2TableAccessible : public IAccessibleTable
{
public:
  // IAccessibleTable
  inline TableAccessible* TableAccessible()
  {
    return mGeckoObj->AsTable();
  }
};
 
hresult
ia2TableAccessible::IATableMethod()
{
  TableAccessible* geckoAcc = mGeckoObj->AsTable();
  geckoAcc->TableMethod();
  return S_OK;
}
 
class nativeAccessible : public sdnAccessible
{
};
 
class nativeAccessible : public sdnAccessible,
                        public msaaAccessible
{
};
 
class nativeTableAccessible : public nativeAccessible,
                              public ia2TableAccessible
{
};
 
class AccessibleWrap: public Accessible
{
public:
  inline NativeAccessible* NativeObject()
  {
    if (!mNativeObj || !IsDefunct())
      mNativeObj = CreateNativeAccessible();
    return mNativeObj;
  }
 
protected:
  virtual NativeAccessible* CreateNativeAccessible()
  {
    return new NativeAccessible(this);
  }
};
 
class HTMLTableAccessibleWrap : public HTMLTableAccessible;
{
public:
  virtual NativeAccessible* CreateNativeAccessible()
  {
    return new NativeTableAccessible(this);
  }
};
 
</pre>


==mac==
==mac==
Confirmed users
1,396

edits

Navigation menu