Accessibility/Mac2020/Draft

From MozillaWiki
Jump to: navigation, search

Here is the generated one: <img src="https://www.plantuml.com/plantuml/proxy?src=https%3A%2F%2Fwiki.mozilla.org%2FAccessibility%2FMac2020%2FDraft%3Faction%3Draw">

@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