Accessibility/Mac2020/Draft

From MozillaWiki
< Accessibility‎ | Mac2020
Revision as of 22:23, 25 February 2021 by Eeejay (talk | contribs)
Jump to navigation Jump to search

@startuml

left to right direction hide empty members skinparam shadowing false

abstract class Accessible {

 -- Non-virtual methods --
 .. Role and generic type methods ..
 + nsRoleMapEntry* ARIARoleMap()
 + bool HasARIARole()
 + bool IsARIARole(nsAtom* aARIARole)
 + bool HasStrongARIARole()
 + bool HasGenericType(AccGenericType aType)
 .. Downcasting and types checking methods ..
 + bool IsDoc()
 + DocAccessible* AsDoc()
 + bool IsHyperText()
 + HyperTextAccessible* AsHyperText()
 + bool IsImage()
 {method} ...
 -- Virtual methods or methods that call into virtual methods --
 .. Hierarchy Getters ..
 + {abstract} Accessible* Parent()
 + {abstract} Accessible* ChildAt(uint32_t aIndex)
 + {abstract} Accessible* NextSibling()
 + {abstract} Accessible* PrevSibling()
 + {abstract} uint32_t ChildCount()
 + {abstract} int32_t IndexInParent()
 + bool HasChildren()
 + Accessible* FirstChild()
 + Accessible* LastChild()
 .. Core methods ..
 + {abstract} role Role()
 + {abstract} role ARIARole()
 + {abstract} nsAtom* LandmarkRole()
 + {abstract} uint64_t State()
 + {abstract} uint64_t NativeState()
 + {abstract} ENameValueFlag Name(nsString& aName)
 + {abstract} void Value(nsString& aValue)
 + {abstract} void Help(nsString& aHelp)
 + {abstract} void Description(nsString& aDesc)
 + {abstract} void Attributes(nsTArray<Attribute>* aAttrs)
 + {abstract} nsTArray<Accessible*> RelationByType(RelationType aType)
 + {abstract} void Relations(nsTArray<RelationType>* aTypes,
              nsTArray<nsTArray<Accessible*>>* aTargetSets)
 + {abstract} mozilla::a11y::GroupPos GroupPosition()
 + {abstract} void DOMNodeID(nsString& aID)
 + {abstract} void TakeFocus()
 + {abstract} Accessible* FocusedChild()
 .. Selection methods ..
 + {abstract} void SelectedItems(nsTArray<Accessible*>* aSelectedItems)
 + {abstract} uint32_t SelectedItemCount()
 + {abstract} Accessible* GetSelectedItem(uint32_t aIndex)
 + {abstract} bool IsItemSelected(uint32_t aIndex)
 + {abstract} bool AddItemToSelection(uint32_t aIndex)
 + {abstract} bool RemoveItemFromSelection(uint32_t aIndex)
 + {abstract} bool SelectAll()
 + {abstract} bool UnselectAll()
 + {abstract} void SetSelected(bool aSelect)
 + {abstract} bool DoAction(uint8_t aIndex)
 + {abstract} uint8_t ActionCount()
 + {abstract} void ActionDescriptionAt(uint8_t aIndex, nsString& aDescription)
 + {abstract} void ActionNameAt(uint8_t aIndex, nsString& aName)
 + {abstract} KeyBinding AccessKey()
 + {abstract} KeyBinding KeyboardShortcut()
 .. Numeric value methods ..
 + {abstract} double CurValue()
 + {abstract} bool SetCurValue(double aValue)
 + {abstract} double MinValue()
 + {abstract} double MaxValue()
 + {abstract} double Step()
 .. Screen layout methods ..
 + {abstract} Accessible* ChildAtPoint(int32_t aX, int32_t aY, EWhichChildAtPoint aWhichChild)
 + {abstract} nsIntRect Bounds()
 + {abstract} nsIntRect BoundsInCSSPixels()
 + {abstract} void ScrollTo(uint32_t aScrollType)
 + {abstract} void ScrollToPoint(uint32_t aScrollType, int32_t aX, int32_t aY)
 .. Doc methods (should be in doc iface?) ..
 + {abstract} void Language(nsString& aLocale)
 + {abstract} void DocType(nsString& aType)
 + {abstract} void Title(nsString& aTitle)
 + {abstract} void URL(nsString& aURL)
 + {abstract} void MimeType(nsString aMime)
 + {abstract} void URLDocTypeMimeType(nsString& aURL, nsString& aDocType, nsString& aMimeType)
 -- Fields --
 # uint32_t mType
 # uint32_t mGenericTypes
 # uint8_t mRoleMapEntryIndex;

}

class LocalAccessible extends Accessible {

 -- Methods --
 nsIFrame* GetFrame()
 nsIContent* GetContent()
 -- Fields --
 # nsCOMPtr<nsIContent> mContent;
 # RefPtr<DocAccessible> mDoc;
 # LocalAccessible* mParent;
 # nsTArray<LocalAccessible*> mChildren;

}

class RemoteAccessible extends Accessible {

 -- Fields --
 - nsDataHashtable<nsUint32HashKey, nsString> mStringProps
 - nsDataHashtable<nsUint32HashKey, int64_t> mIntProps
 - nsDataHashtable<nsUint32HashKey, double> mFloatProps

}

@enduml