mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 11:55:49 +00:00
Bug 810572, part 3 - merge Accessible::AccessibleTypes with AccTypes, r=tbsaude
This commit is contained in:
parent
c0033a480e
commit
29945b3499
@ -4,15 +4,20 @@
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#pragma once
|
||||
#ifndef mozilla_a11y_AccTypes_h
|
||||
#define mozilla_a11y_AccTypes_h
|
||||
|
||||
namespace mozilla {
|
||||
namespace a11y {
|
||||
|
||||
/**
|
||||
* Accessible object types used when creating an accessible based on the frame.
|
||||
* Accessible object types. Each accessible class can have own type.
|
||||
*/
|
||||
enum AccType {
|
||||
/**
|
||||
* This set of types is used for accessible creation, keep them together in
|
||||
* alphabetical order since they are used in switch statement.
|
||||
*/
|
||||
eNoType,
|
||||
eHTMLBRType,
|
||||
eHTMLButtonType,
|
||||
@ -36,9 +41,45 @@ enum AccType {
|
||||
eHyperTextType,
|
||||
eImageType,
|
||||
eOuterDocType,
|
||||
ePlugin,
|
||||
eTextLeafType
|
||||
};
|
||||
}
|
||||
}
|
||||
ePluginType,
|
||||
eTextLeafType,
|
||||
|
||||
/**
|
||||
* Other accessible types.
|
||||
*/
|
||||
eApplicationType,
|
||||
eImageMapType,
|
||||
eMenuPopupType,
|
||||
eProgressType,
|
||||
eRootType,
|
||||
eXULDeckType,
|
||||
eXULTreeType,
|
||||
|
||||
eLastAccType = eXULTreeType
|
||||
};
|
||||
|
||||
/**
|
||||
* Generic accessible type, different accessible classes can share the same
|
||||
* type, the same accessible class can have several types.
|
||||
*/
|
||||
enum AccGenericType {
|
||||
eAutoComplete = 1 << 0,
|
||||
eAutoCompletePopup = 1 << 1,
|
||||
eCombobox = 1 << 2,
|
||||
eDocument = 1 << 3,
|
||||
eHyperText = 1 << 4,
|
||||
eList = 1 << 5,
|
||||
eListControl = 1 << 6,
|
||||
eMenuButton = 1 << 7,
|
||||
eSelect = 1 << 8,
|
||||
eTable = 1 << 9,
|
||||
eTableCell = 1 << 10,
|
||||
eTableRow = 1 << 11,
|
||||
|
||||
eLastAccGenericType = eTableRow
|
||||
};
|
||||
|
||||
} // namespace a11y
|
||||
} // namespace mozilla
|
||||
|
||||
#endif // mozilla_a11y_AccTypes_h
|
||||
|
@ -110,7 +110,7 @@ static nsRoleMapEntry sWAIRoleMaps[] =
|
||||
eNoValue,
|
||||
eSortAction,
|
||||
eNoLiveAttr,
|
||||
Accessible::eTableCellAccessible,
|
||||
eTableCell,
|
||||
kNoReqStates,
|
||||
eARIASelectable,
|
||||
eARIAReadonly
|
||||
@ -144,7 +144,7 @@ static nsRoleMapEntry sWAIRoleMaps[] =
|
||||
eNoValue,
|
||||
eNoAction,
|
||||
eNoLiveAttr,
|
||||
Accessible::eListAccessible,
|
||||
eList,
|
||||
kNoReqStates
|
||||
},
|
||||
{ // document
|
||||
@ -175,7 +175,7 @@ static nsRoleMapEntry sWAIRoleMaps[] =
|
||||
eNoValue,
|
||||
eNoAction,
|
||||
eNoLiveAttr,
|
||||
Accessible::eSelectAccessible | Accessible::eTableAccessible,
|
||||
eSelect | eTable,
|
||||
states::FOCUSABLE,
|
||||
eARIAMultiSelectable,
|
||||
eARIAReadonly
|
||||
@ -187,7 +187,7 @@ static nsRoleMapEntry sWAIRoleMaps[] =
|
||||
eNoValue,
|
||||
eNoAction,
|
||||
eNoLiveAttr,
|
||||
Accessible::eTableCellAccessible,
|
||||
eTableCell,
|
||||
kNoReqStates,
|
||||
eARIASelectable,
|
||||
eARIAReadonly
|
||||
@ -239,7 +239,7 @@ static nsRoleMapEntry sWAIRoleMaps[] =
|
||||
eNoValue,
|
||||
eNoAction,
|
||||
eNoLiveAttr,
|
||||
Accessible::eListAccessible,
|
||||
eList,
|
||||
states::READONLY
|
||||
},
|
||||
{ // listbox
|
||||
@ -249,7 +249,7 @@ static nsRoleMapEntry sWAIRoleMaps[] =
|
||||
eNoValue,
|
||||
eNoAction,
|
||||
eNoLiveAttr,
|
||||
Accessible::eSelectAccessible,
|
||||
eSelect,
|
||||
kNoReqStates,
|
||||
eARIAMultiSelectable,
|
||||
eARIAReadonly
|
||||
@ -429,7 +429,7 @@ static nsRoleMapEntry sWAIRoleMaps[] =
|
||||
eNoValue,
|
||||
eNoAction,
|
||||
eNoLiveAttr,
|
||||
Accessible::eTableRowAccessible,
|
||||
eTableRow,
|
||||
kNoReqStates,
|
||||
eARIASelectable
|
||||
},
|
||||
@ -450,7 +450,7 @@ static nsRoleMapEntry sWAIRoleMaps[] =
|
||||
eNoValue,
|
||||
eSortAction,
|
||||
eNoLiveAttr,
|
||||
Accessible::eTableCellAccessible,
|
||||
eTableCell,
|
||||
kNoReqStates,
|
||||
eARIASelectable,
|
||||
eARIAReadonly
|
||||
@ -529,7 +529,7 @@ static nsRoleMapEntry sWAIRoleMaps[] =
|
||||
eNoValue,
|
||||
eNoAction,
|
||||
ePoliteLiveAttr,
|
||||
Accessible::eSelectAccessible,
|
||||
eSelect,
|
||||
kNoReqStates
|
||||
},
|
||||
{ // tabpanel
|
||||
@ -591,7 +591,7 @@ static nsRoleMapEntry sWAIRoleMaps[] =
|
||||
eNoValue,
|
||||
eNoAction,
|
||||
eNoLiveAttr,
|
||||
Accessible::eSelectAccessible,
|
||||
eSelect,
|
||||
kNoReqStates,
|
||||
eARIAReadonly,
|
||||
eARIAMultiSelectable
|
||||
@ -603,7 +603,7 @@ static nsRoleMapEntry sWAIRoleMaps[] =
|
||||
eNoValue,
|
||||
eNoAction,
|
||||
eNoLiveAttr,
|
||||
Accessible::eSelectAccessible | Accessible::eTableAccessible,
|
||||
eSelect | eTable,
|
||||
kNoReqStates,
|
||||
eARIAReadonly,
|
||||
eARIAMultiSelectable
|
||||
|
@ -797,14 +797,14 @@ nsAccessibilityService::GetOrCreateAccessible(nsINode* aNode,
|
||||
if (roleMapEntry) {
|
||||
// Create pure ARIA grid/treegrid related accessibles if they weren't used
|
||||
// on accessible HTML table elements.
|
||||
if ((roleMapEntry->accTypes & Accessible::eTableCellAccessible)) {
|
||||
if (aContext->IsOfType(Accessible::eTableRowAccessible) &&
|
||||
if ((roleMapEntry->accTypes & eTableCell)) {
|
||||
if (aContext->IsTableRow() &&
|
||||
(frame->AccessibleType() != eHTMLTableCellType ||
|
||||
aContext->GetContent() != content->GetParent())) {
|
||||
newAcc = new ARIAGridCellAccessibleWrap(content, document);
|
||||
}
|
||||
|
||||
} else if ((roleMapEntry->accTypes & Accessible::eTableAccessible) &&
|
||||
} else if ((roleMapEntry->accTypes & eTable) &&
|
||||
frame->AccessibleType() != eHTMLTableType) {
|
||||
newAcc = new ARIAGridAccessibleWrap(content, document);
|
||||
}
|
||||
@ -824,8 +824,7 @@ nsAccessibilityService::GetOrCreateAccessible(nsINode* aNode,
|
||||
if (!roleMapEntry && newAcc) {
|
||||
if (frame->AccessibleType() == eHTMLTableRowType) {
|
||||
nsRoleMapEntry* contextRoleMap = aContext->ARIARoleMap();
|
||||
if (contextRoleMap &&
|
||||
!(contextRoleMap->accTypes & Accessible::eTableAccessible))
|
||||
if (contextRoleMap && !(contextRoleMap->accTypes & eTable))
|
||||
roleMapEntry = &nsARIAMap::gEmptyRoleMap;
|
||||
|
||||
} else if (frame->AccessibleType() == eHTMLTableCellType &&
|
||||
@ -837,8 +836,7 @@ nsAccessibilityService::GetOrCreateAccessible(nsINode* aNode,
|
||||
content->Tag() == nsGkAtoms::dd ||
|
||||
frame->AccessibleType() == eHTMLLiType) {
|
||||
nsRoleMapEntry* contextRoleMap = aContext->ARIARoleMap();
|
||||
if (contextRoleMap &&
|
||||
!(contextRoleMap->accTypes & Accessible::eListAccessible))
|
||||
if (contextRoleMap && !(contextRoleMap->accTypes & eList))
|
||||
roleMapEntry = &nsARIAMap::gEmptyRoleMap;
|
||||
}
|
||||
}
|
||||
@ -1176,7 +1174,7 @@ nsAccessibilityService::CreateHTMLAccessibleByMarkup(nsIFrame* aFrame,
|
||||
Accessible* aContext)
|
||||
{
|
||||
DocAccessible* document = aContext->Document();
|
||||
if (aContext->IsOfType(Accessible::eTableRowAccessible)) {
|
||||
if (aContext->IsTableRow()) {
|
||||
if (nsCoreUtils::IsHTMLTableHeader(aContent) &&
|
||||
aContext->GetContent() == aContent->GetParent()) {
|
||||
Accessible* accessible = new HTMLTableHeaderCellAccessibleWrap(aContent,
|
||||
@ -1244,7 +1242,7 @@ nsAccessibilityService::CreateHTMLAccessibleByMarkup(nsIFrame* aFrame,
|
||||
return accessible;
|
||||
}
|
||||
|
||||
if (aContext->IsOfType(Accessible::eListAccessible)) {
|
||||
if (aContext->IsList()) {
|
||||
// If list item is a child of accessible list then create an accessible for
|
||||
// it unconditionally by tag name. nsBlockFrame creates the list item
|
||||
// accessible for other elements styled as list items.
|
||||
@ -1318,7 +1316,7 @@ nsAccessibilityService::CreateAccessibleByFrameType(nsIFrame* aFrame,
|
||||
newAcc = new HTMLCanvasAccessible(aContent, document);
|
||||
break;
|
||||
case eHTMLCaptionType:
|
||||
if (aContext->IsOfType(Accessible::eTableAccessible) &&
|
||||
if (aContext->IsTable() &&
|
||||
aContext->GetContent() == aContent->GetParent()) {
|
||||
newAcc = new HTMLCaptionAccessible(aContent, document);
|
||||
}
|
||||
@ -1345,7 +1343,7 @@ nsAccessibilityService::CreateAccessibleByFrameType(nsIFrame* aFrame,
|
||||
newAcc = new HTMLLabelAccessible(aContent, document);
|
||||
break;
|
||||
case eHTMLLiType:
|
||||
if (aContext->IsOfType(Accessible::eListAccessible) &&
|
||||
if (aContext->IsList() &&
|
||||
aContext->GetContent() == aContent->GetParent()) {
|
||||
newAcc = new HTMLLIAccessible(aContent, document);
|
||||
}
|
||||
@ -1364,14 +1362,14 @@ nsAccessibilityService::CreateAccessibleByFrameType(nsIFrame* aFrame,
|
||||
break;
|
||||
case eHTMLTableCellType:
|
||||
// Accessible HTML table cell must be a child of accessible HTML table row.
|
||||
if (aContext->IsOfType(Accessible::eHTMLTableRowAccessible))
|
||||
if (aContext->IsHTMLTableRow())
|
||||
newAcc = new HTMLTableCellAccessibleWrap(aContent, document);
|
||||
break;
|
||||
|
||||
case eHTMLTableRowType: {
|
||||
// Accessible HTML table row must be a child of tbody/tfoot/thead of
|
||||
// accessible HTML table or must be a child of accessible of HTML table.
|
||||
if (aContext->IsOfType(Accessible::eTableAccessible)) {
|
||||
if (aContext->IsTable()) {
|
||||
nsIContent* parentContent = aContent->GetParent();
|
||||
nsIFrame* parentFrame = parentContent->GetPrimaryFrame();
|
||||
if (parentFrame->GetType() == nsGkAtoms::tableRowGroupFrame) {
|
||||
@ -1400,7 +1398,7 @@ nsAccessibilityService::CreateAccessibleByFrameType(nsIFrame* aFrame,
|
||||
case eOuterDocType:
|
||||
newAcc = new OuterDocAccessible(aContent, document);
|
||||
break;
|
||||
case ePlugin: {
|
||||
case ePluginType: {
|
||||
nsObjectFrame* objectFrame = do_QueryFrame(aFrame);
|
||||
newAcc = CreatePluginAccessible(objectFrame, aContent, aContext);
|
||||
break;
|
||||
|
@ -36,7 +36,7 @@ Accessible::SetRoleMapEntry(nsRoleMapEntry* aRoleMapEntry)
|
||||
{
|
||||
mRoleMapEntry = aRoleMapEntry;
|
||||
if (mRoleMapEntry)
|
||||
mFlags |= mRoleMapEntry->accTypes;
|
||||
mGenericTypes |= mRoleMapEntry->accTypes;
|
||||
}
|
||||
|
||||
inline bool
|
||||
|
@ -73,6 +73,7 @@
|
||||
#include "nsIDOMCharacterData.h"
|
||||
#endif
|
||||
|
||||
#include "mozilla/Assertions.h"
|
||||
#include "mozilla/unused.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
#include "mozilla/dom/Element.h"
|
||||
@ -146,7 +147,8 @@ Accessible::QueryInterface(REFNSIID aIID, void** aInstancePtr)
|
||||
Accessible::Accessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
nsAccessNodeWrap(aContent, aDoc),
|
||||
mParent(nullptr), mIndexInParent(-1), mChildrenFlags(eChildrenUninitialized),
|
||||
mStateFlags(0), mFlags(0), mIndexOfEmbeddedChild(-1), mRoleMapEntry(nullptr)
|
||||
mStateFlags(0), mType(0), mGenericTypes(0), mIndexOfEmbeddedChild(-1),
|
||||
mRoleMapEntry(nullptr)
|
||||
{
|
||||
#ifdef NS_DEBUG_X
|
||||
{
|
||||
@ -3175,6 +3177,19 @@ Accessible::GetLevelInternal()
|
||||
return level;
|
||||
}
|
||||
|
||||
void
|
||||
Accessible::StaticAsserts() const
|
||||
{
|
||||
MOZ_STATIC_ASSERT(eLastChildrenFlag <= (2 << kChildrenFlagsBits) - 1,
|
||||
"Accessible::mChildrenFlags was oversized by eLastChildrenFlag!");
|
||||
MOZ_STATIC_ASSERT(eLastStateFlag <= (2 << kStateFlagsBits) - 1,
|
||||
"Accessible::mStateFlags was oversized by eLastStateFlag!");
|
||||
MOZ_STATIC_ASSERT(eLastAccType <= (2 << kTypeBits) - 1,
|
||||
"Accessible::mType was oversized by eLastAccType!");
|
||||
MOZ_STATIC_ASSERT(eLastAccGenericType <= (2 << kGenericTypesBits) - 1,
|
||||
"Accessible::mGenericType was oversized by eLastAccGenericType!");
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// KeyBinding class
|
||||
|
@ -6,6 +6,7 @@
|
||||
#ifndef _Accessible_H_
|
||||
#define _Accessible_H_
|
||||
|
||||
#include "mozilla/a11y/AccTypes.h"
|
||||
#include "mozilla/a11y/Role.h"
|
||||
#include "mozilla/a11y/States.h"
|
||||
#include "nsAccessNodeWrap.h"
|
||||
@ -465,53 +466,63 @@ public:
|
||||
(mContent->Tag() == nsGkAtoms::abbr || mContent->Tag() == nsGkAtoms::acronym);
|
||||
}
|
||||
|
||||
inline bool IsApplication() const { return mFlags & eApplicationAccessible; }
|
||||
bool IsApplication() const { return mType == eApplicationType; }
|
||||
|
||||
bool IsAutoComplete() const { return mFlags & eAutoCompleteAccessible; }
|
||||
bool IsAutoComplete() const { return mGenericTypes & eAutoComplete; }
|
||||
|
||||
inline bool IsAutoCompletePopup() const { return mFlags & eAutoCompletePopupAccessible; }
|
||||
bool IsAutoCompletePopup() const
|
||||
{ return mGenericTypes & eAutoCompletePopup; }
|
||||
|
||||
inline bool IsCombobox() const { return mFlags & eComboboxAccessible; }
|
||||
bool IsCombobox() const { return mGenericTypes & eCombobox; }
|
||||
|
||||
inline bool IsDoc() const { return mFlags & eDocAccessible; }
|
||||
bool IsDoc() const { return mGenericTypes & eDocument; }
|
||||
DocAccessible* AsDoc();
|
||||
|
||||
inline bool IsHyperText() const { return mFlags & eHyperTextAccessible; }
|
||||
bool IsHyperText() const { return mGenericTypes & eHyperText; }
|
||||
HyperTextAccessible* AsHyperText();
|
||||
|
||||
inline bool IsHTMLFileInput() const { return mFlags & eHTMLFileInputAccessible; }
|
||||
bool IsHTMLFileInput() const { return mType == eHTMLFileInputType; }
|
||||
|
||||
inline bool IsHTMLListItem() const { return mFlags & eHTMLListItemAccessible; }
|
||||
mozilla::a11y::HTMLLIAccessible* AsHTMLListItem();
|
||||
bool IsHTMLListItem() const { return mType == eHTMLLiType; }
|
||||
HTMLLIAccessible* AsHTMLListItem();
|
||||
|
||||
inline bool IsImage() const { return mFlags & eImageAccessible; }
|
||||
mozilla::a11y::ImageAccessible* AsImage();
|
||||
bool IsHTMLTableRow() const { return mType == eHTMLTableRowType; }
|
||||
|
||||
bool IsImageMapAccessible() const { return mFlags & eImageMapAccessible; }
|
||||
mozilla::a11y::HTMLImageMapAccessible* AsImageMap();
|
||||
bool IsImage() const { return mType == eImageType; }
|
||||
ImageAccessible* AsImage();
|
||||
|
||||
inline bool IsXULTree() const { return mFlags & eXULTreeAccessible; }
|
||||
mozilla::a11y::XULTreeAccessible* AsXULTree();
|
||||
bool IsImageMap() const { return mType == eImageMapType; }
|
||||
HTMLImageMapAccessible* AsImageMap();
|
||||
|
||||
inline bool IsXULDeck() const { return mFlags & eXULDeckAccessible; }
|
||||
bool IsList() const { return mGenericTypes & eList; }
|
||||
|
||||
inline bool IsListControl() const { return mFlags & eListControlAccessible; }
|
||||
bool IsListControl() const { return mGenericTypes & eListControl; }
|
||||
|
||||
inline bool IsMenuButton() const { return mFlags & eMenuButtonAccessible; }
|
||||
bool IsMenuButton() const { return mGenericTypes & eMenuButton; }
|
||||
|
||||
inline bool IsMenuPopup() const { return mFlags & eMenuPopupAccessible; }
|
||||
bool IsMenuPopup() const { return mType == eMenuPopupType; }
|
||||
|
||||
inline bool IsProgress() const { return mFlags & eProgressAccessible; }
|
||||
bool IsProgress() const { return mType == eProgressType; }
|
||||
|
||||
inline bool IsRoot() const { return mFlags & eRootAccessible; }
|
||||
mozilla::a11y::RootAccessible* AsRoot();
|
||||
bool IsRoot() const { return mType == eRootType; }
|
||||
a11y::RootAccessible* AsRoot();
|
||||
|
||||
virtual mozilla::a11y::TableAccessible* AsTable() { return nullptr; }
|
||||
bool IsSelect() const { return mGenericTypes & eSelect; }
|
||||
|
||||
virtual mozilla::a11y::TableCellAccessible* AsTableCell() { return nullptr; }
|
||||
bool IsTable() const { return mGenericTypes & eTable; }
|
||||
virtual TableAccessible* AsTable() { return nullptr; }
|
||||
|
||||
inline bool IsTextLeaf() const { return mFlags & eTextLeafAccessible; }
|
||||
mozilla::a11y::TextLeafAccessible* AsTextLeaf();
|
||||
virtual TableCellAccessible* AsTableCell() { return nullptr; }
|
||||
|
||||
bool IsTableRow() const { return mGenericTypes & eTableRow; }
|
||||
|
||||
bool IsTextLeaf() const { return mType == eTextLeafType; }
|
||||
TextLeafAccessible* AsTextLeaf();
|
||||
|
||||
bool IsXULDeck() const { return mType == eXULDeckType; }
|
||||
|
||||
bool IsXULTree() const { return mType == eXULTreeType; }
|
||||
XULTreeAccessible* AsXULTree();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// ActionAccessible
|
||||
@ -587,12 +598,6 @@ public:
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// SelectAccessible
|
||||
|
||||
/**
|
||||
* Return true if the accessible is a select control containing selectable
|
||||
* items.
|
||||
*/
|
||||
bool IsSelect() const { return mFlags & eSelectAccessible; }
|
||||
|
||||
/**
|
||||
* Return an array of selected items.
|
||||
*/
|
||||
@ -697,11 +702,6 @@ public:
|
||||
bool HasOwnContent() const
|
||||
{ return mContent && !(mStateFlags & eSharedNode); }
|
||||
|
||||
/**
|
||||
* Return true if accessible is of given type.
|
||||
*/
|
||||
bool IsOfType(uint32_t aType) const { return mFlags & aType; }
|
||||
|
||||
/**
|
||||
* Return true if the accessible has a numeric value.
|
||||
*/
|
||||
@ -747,7 +747,9 @@ protected:
|
||||
enum ChildrenFlags {
|
||||
eChildrenUninitialized = 0, // children aren't initialized
|
||||
eMixedChildren = 1 << 0, // text leaf children are presented
|
||||
eEmbeddedChildren = 1 << 1 // all children are embedded objects
|
||||
eEmbeddedChildren = 1 << 1, // all children are embedded objects
|
||||
|
||||
eLastChildrenFlag = eEmbeddedChildren
|
||||
};
|
||||
|
||||
/**
|
||||
@ -770,39 +772,9 @@ protected:
|
||||
eIsNotInDocument = 1 << 1, // accessible is not in document
|
||||
eSharedNode = 1 << 2, // accessible shares DOM node from another accessible
|
||||
eNotNodeMapEntry = 1 << 3, // accessible shouldn't be in document node map
|
||||
eHasNumericValue = 1 << 4 // accessible has a numeric value
|
||||
};
|
||||
eHasNumericValue = 1 << 4, // accessible has a numeric value
|
||||
|
||||
public: // XXX: a small hack to make these visible for nsARIAMap
|
||||
/**
|
||||
* Flags describing the type of this accessible.
|
||||
* @note keep these flags in sync with ChildrenFlags and StateFlags
|
||||
*/
|
||||
enum AccessibleTypes {
|
||||
eApplicationAccessible = 1 << 0,
|
||||
eAutoCompleteAccessible = 1 << 1,
|
||||
eAutoCompletePopupAccessible = 1 << 2,
|
||||
eComboboxAccessible = 1 << 3,
|
||||
eDocAccessible = 1 << 4,
|
||||
eHyperTextAccessible = 1 << 5,
|
||||
eHTMLFileInputAccessible = 1 << 6,
|
||||
eHTMLListItemAccessible = 1 << 7,
|
||||
eHTMLTableRowAccessible = 1 << 8,
|
||||
eImageAccessible = 1 << 9,
|
||||
eImageMapAccessible = 1 << 10,
|
||||
eListAccessible = 1 << 11,
|
||||
eListControlAccessible = 1 << 12,
|
||||
eMenuButtonAccessible = 1 << 13,
|
||||
eMenuPopupAccessible = 1 << 14,
|
||||
eProgressAccessible = 1 << 15,
|
||||
eRootAccessible = 1 << 16,
|
||||
eSelectAccessible = 1 << 17,
|
||||
eTableAccessible = 1 << 18,
|
||||
eTableCellAccessible = 1 << 19,
|
||||
eTableRowAccessible = 1 << 20,
|
||||
eTextLeafAccessible = 1 << 21,
|
||||
eXULDeckAccessible = 1 << 22,
|
||||
eXULTreeAccessible = 1 << 23
|
||||
eLastStateFlag = eHasNumericValue
|
||||
};
|
||||
|
||||
protected:
|
||||
@ -909,12 +881,20 @@ protected:
|
||||
nsTArray<nsRefPtr<Accessible> > mChildren;
|
||||
int32_t mIndexInParent;
|
||||
|
||||
static const uint8_t kChildrenFlagsBits = 2;
|
||||
static const uint8_t kStateFlagsBits = 5;
|
||||
static const uint8_t kTypeBits = 5;
|
||||
static const uint8_t kGenericTypesBits = 12;
|
||||
|
||||
/**
|
||||
* Keep in sync with ChildrenFlags, StateFlags and AccessibleTypes.
|
||||
* Keep in sync with ChildrenFlags, StateFlags and AccTypes.
|
||||
*/
|
||||
uint32_t mChildrenFlags : 2;
|
||||
uint32_t mStateFlags : 5;
|
||||
uint32_t mFlags : 25;
|
||||
uint32_t mChildrenFlags : kChildrenFlagsBits;
|
||||
uint32_t mStateFlags : kStateFlagsBits;
|
||||
uint32_t mType : kTypeBits;
|
||||
uint32_t mGenericTypes : kGenericTypesBits;
|
||||
|
||||
void StaticAsserts() const;
|
||||
|
||||
friend class DocAccessible;
|
||||
|
||||
|
@ -26,7 +26,7 @@ using namespace mozilla::a11y;
|
||||
ApplicationAccessible::ApplicationAccessible() :
|
||||
AccessibleWrap(nullptr, nullptr)
|
||||
{
|
||||
mFlags |= eApplicationAccessible;
|
||||
mType = eApplicationType;
|
||||
mAppInfo = do_GetService("@mozilla.org/xre/app-info;1");
|
||||
}
|
||||
|
||||
|
@ -79,7 +79,7 @@ DocAccessible::
|
||||
mVirtualCursor(nullptr),
|
||||
mPresShell(aPresShell)
|
||||
{
|
||||
mFlags |= eDocAccessible;
|
||||
mGenericTypes |= eDocument;
|
||||
mStateFlags |= eNotNodeMapEntry;
|
||||
|
||||
MOZ_ASSERT(mPresShell, "should have been given a pres shell");
|
||||
@ -92,7 +92,7 @@ DocAccessible::
|
||||
|
||||
// If this is a XUL Document, it should not implement nsHyperText
|
||||
if (mDocumentNode && mDocumentNode->IsXUL())
|
||||
mFlags &= ~eHyperTextAccessible;
|
||||
mGenericTypes &= ~eHyperText;
|
||||
|
||||
// For GTK+ native window, we do nothing here.
|
||||
if (!mDocumentNode)
|
||||
|
@ -574,8 +574,7 @@ private:
|
||||
inline DocAccessible*
|
||||
Accessible::AsDoc()
|
||||
{
|
||||
return mFlags & eDocAccessible ?
|
||||
static_cast<DocAccessible*>(this) : nullptr;
|
||||
return IsDoc() ? static_cast<DocAccessible*>(this) : nullptr;
|
||||
}
|
||||
|
||||
} // namespace a11y
|
||||
|
@ -22,7 +22,7 @@ public:
|
||||
LeafAccessible(aContent, aDoc)
|
||||
{
|
||||
mStateFlags |= eHasNumericValue;
|
||||
mFlags |= eProgressAccessible;
|
||||
mType = eProgressType;
|
||||
}
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
@ -41,7 +41,7 @@ HyperTextAccessible::
|
||||
HyperTextAccessible(nsIContent* aNode, DocAccessible* aDoc) :
|
||||
AccessibleWrap(aNode, aDoc)
|
||||
{
|
||||
mFlags |= eHyperTextAccessible;
|
||||
mGenericTypes |= eHyperText;
|
||||
}
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(HyperTextAccessible, AccessibleWrap)
|
||||
|
@ -400,8 +400,7 @@ private:
|
||||
inline HyperTextAccessible*
|
||||
Accessible::AsHyperText()
|
||||
{
|
||||
return mFlags & eHyperTextAccessible ?
|
||||
static_cast<HyperTextAccessible*>(this) : nullptr;
|
||||
return IsHyperText() ? static_cast<HyperTextAccessible*>(this) : nullptr;
|
||||
}
|
||||
|
||||
} // namespace a11y
|
||||
|
@ -31,7 +31,7 @@ ImageAccessible::
|
||||
ImageAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
LinkableAccessible(aContent, aDoc)
|
||||
{
|
||||
mFlags |= eImageAccessible;
|
||||
mType = eImageType;
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS_INHERITED1(ImageAccessible, Accessible,
|
||||
|
@ -61,7 +61,7 @@ RootAccessible::
|
||||
nsIPresShell* aPresShell) :
|
||||
DocAccessibleWrap(aDocument, aRootContent, aPresShell)
|
||||
{
|
||||
mFlags |= eRootAccessible;
|
||||
mType = eRootType;
|
||||
}
|
||||
|
||||
RootAccessible::~RootAccessible()
|
||||
|
@ -85,8 +85,7 @@ protected:
|
||||
inline RootAccessible*
|
||||
Accessible::AsRoot()
|
||||
{
|
||||
return mFlags & eRootAccessible ?
|
||||
static_cast<mozilla::a11y::RootAccessible*>(this) : nullptr;
|
||||
return IsRoot() ? static_cast<mozilla::a11y::RootAccessible*>(this) : nullptr;
|
||||
}
|
||||
|
||||
} // namespace a11y
|
||||
|
@ -19,7 +19,7 @@ TextLeafAccessible::
|
||||
TextLeafAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
LinkableAccessible(aContent, aDoc)
|
||||
{
|
||||
mFlags |= eTextLeafAccessible;
|
||||
mType = eTextLeafType;
|
||||
}
|
||||
|
||||
TextLeafAccessible::~TextLeafAccessible()
|
||||
|
@ -45,8 +45,7 @@ protected:
|
||||
inline TextLeafAccessible*
|
||||
Accessible::AsTextLeaf()
|
||||
{
|
||||
return mFlags & eTextLeafAccessible ?
|
||||
static_cast<TextLeafAccessible*>(this) : nullptr;
|
||||
return IsTextLeaf() ? static_cast<TextLeafAccessible*>(this) : nullptr;
|
||||
}
|
||||
|
||||
} // namespace a11y
|
||||
|
@ -532,7 +532,7 @@ HTMLFileInputAccessible::
|
||||
HTMLFileInputAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
HyperTextAccessibleWrap(aContent, aDoc)
|
||||
{
|
||||
mFlags |= eHTMLFileInputAccessible;
|
||||
mType = eHTMLFileInputType;
|
||||
}
|
||||
|
||||
role
|
||||
|
@ -28,7 +28,7 @@ HTMLImageMapAccessible::
|
||||
HTMLImageMapAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
ImageAccessibleWrap(aContent, aDoc)
|
||||
{
|
||||
mFlags |= eImageMapAccessible;
|
||||
mType = eImageMapType;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -76,8 +76,7 @@ protected:
|
||||
inline HTMLImageMapAccessible*
|
||||
Accessible::AsImageMap()
|
||||
{
|
||||
return IsImageMapAccessible() ?
|
||||
static_cast<HTMLImageMapAccessible*>(this) : nullptr;
|
||||
return IsImageMap() ? static_cast<HTMLImageMapAccessible*>(this) : nullptr;
|
||||
}
|
||||
|
||||
} // namespace a11y
|
||||
|
@ -46,7 +46,7 @@ HTMLLIAccessible::
|
||||
HTMLLIAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
HyperTextAccessibleWrap(aContent, aDoc), mBullet(nullptr)
|
||||
{
|
||||
mFlags |= eHTMLListItemAccessible;
|
||||
mType = eHTMLLiType;
|
||||
|
||||
nsBlockFrame* blockFrame = do_QueryFrame(GetFrame());
|
||||
if (blockFrame && blockFrame->HasBullet()) {
|
||||
|
@ -22,7 +22,7 @@ class HTMLListAccessible : public HyperTextAccessibleWrap
|
||||
{
|
||||
public:
|
||||
HTMLListAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
HyperTextAccessibleWrap(aContent, aDoc) { mFlags |= eListAccessible; }
|
||||
HyperTextAccessibleWrap(aContent, aDoc) { mGenericTypes |= eList; }
|
||||
virtual ~HTMLListAccessible() { }
|
||||
|
||||
// nsISupports
|
||||
@ -100,8 +100,7 @@ public:
|
||||
inline HTMLLIAccessible*
|
||||
Accessible::AsHTMLListItem()
|
||||
{
|
||||
return mFlags & eHTMLListItemAccessible ?
|
||||
static_cast<HTMLLIAccessible*>(this) : nullptr;
|
||||
return IsHTMLListItem() ? static_cast<HTMLLIAccessible*>(this) : nullptr;
|
||||
}
|
||||
|
||||
} // namespace a11y
|
||||
|
@ -31,7 +31,7 @@ HTMLSelectListAccessible::
|
||||
HTMLSelectListAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
AccessibleWrap(aContent, aDoc)
|
||||
{
|
||||
mFlags |= eSelectAccessible | eListControlAccessible;
|
||||
mGenericTypes |= eListControl | eSelect;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@ -397,7 +397,7 @@ HTMLComboboxAccessible::
|
||||
HTMLComboboxAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
AccessibleWrap(aContent, aDoc)
|
||||
{
|
||||
mFlags |= eComboboxAccessible;
|
||||
mGenericTypes |= eCombobox;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -347,7 +347,7 @@ HTMLTableAccessible::
|
||||
HTMLTableAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
AccessibleWrap(aContent, aDoc), xpcAccessibleTable(this)
|
||||
{
|
||||
mFlags |= eTableAccessible;
|
||||
mGenericTypes |= eTable;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -93,7 +93,10 @@ class HTMLTableRowAccessible : public AccessibleWrap
|
||||
public:
|
||||
HTMLTableRowAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
AccessibleWrap(aContent, aDoc)
|
||||
{ mFlags |= eTableRowAccessible | eHTMLTableRowAccessible; }
|
||||
{
|
||||
mType = eHTMLTableRowType;
|
||||
mGenericTypes |= eTableRow;
|
||||
}
|
||||
virtual ~HTMLTableRowAccessible() { }
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
@ -88,7 +88,7 @@ XULColorPickerAccessible::
|
||||
XULColorPickerAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
XULColorPickerTileAccessible(aContent, aDoc)
|
||||
{
|
||||
mFlags |= eMenuButtonAccessible;
|
||||
mGenericTypes |= eMenuButton;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -28,9 +28,9 @@ XULComboboxAccessible::
|
||||
{
|
||||
if (mContent->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type,
|
||||
nsGkAtoms::autocomplete, eIgnoreCase))
|
||||
mFlags |= eAutoCompleteAccessible;
|
||||
mGenericTypes |= eAutoComplete;
|
||||
else
|
||||
mFlags |= eComboboxAccessible;
|
||||
mGenericTypes |= eCombobox;
|
||||
}
|
||||
|
||||
role
|
||||
|
@ -40,7 +40,7 @@ XULButtonAccessible::
|
||||
AccessibleWrap(aContent, aDoc)
|
||||
{
|
||||
if (ContainsMenu())
|
||||
mFlags |= eMenuButtonAccessible;
|
||||
mGenericTypes |= eMenuButton;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -108,7 +108,7 @@ XULListboxAccessible::
|
||||
nsCOMPtr<nsIAutoCompletePopup> autoCompletePopupElm =
|
||||
do_QueryInterface(parentContent);
|
||||
if (autoCompletePopupElm)
|
||||
mFlags |= eAutoCompletePopupAccessible;
|
||||
mGenericTypes |= eAutoCompletePopup;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -436,12 +436,12 @@ XULMenupopupAccessible::
|
||||
{
|
||||
nsMenuPopupFrame* menuPopupFrame = do_QueryFrame(GetFrame());
|
||||
if (menuPopupFrame && menuPopupFrame->IsMenu())
|
||||
mFlags |= eMenuPopupAccessible;
|
||||
mType = eMenuPopupType;
|
||||
|
||||
// May be the anonymous <menupopup> inside <menulist> (a combobox)
|
||||
mSelectControl = do_QueryInterface(mContent->GetParent());
|
||||
if (!mSelectControl)
|
||||
mFlags &= ~eSelectAccessible;
|
||||
mGenericTypes &= ~eSelect;
|
||||
}
|
||||
|
||||
uint64_t
|
||||
|
@ -31,7 +31,7 @@ XULSelectControlAccessible::
|
||||
XULSelectControlAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
AccessibleWrap(aContent, aDoc)
|
||||
{
|
||||
mFlags |= eSelectAccessible;
|
||||
mGenericTypes |= eSelect;
|
||||
mSelectControl = do_QueryInterface(aContent);
|
||||
}
|
||||
|
||||
|
@ -67,7 +67,7 @@ class XULDeckAccessible : public AccessibleWrap
|
||||
public:
|
||||
XULDeckAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
AccessibleWrap(aContent, aDoc)
|
||||
{ mFlags |= eXULDeckAccessible; }
|
||||
{ mType = eXULDeckType; }
|
||||
|
||||
// Accessible
|
||||
virtual a11y::role NativeRole();
|
||||
|
@ -37,7 +37,8 @@ XULTreeAccessible::
|
||||
XULTreeAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
AccessibleWrap(aContent, aDoc)
|
||||
{
|
||||
mFlags |= eSelectAccessible | eXULTreeAccessible;
|
||||
mType = eXULTreeType;
|
||||
mGenericTypes |= eSelect;
|
||||
|
||||
mTree = nsCoreUtils::GetTreeBoxObject(aContent);
|
||||
NS_ASSERTION(mTree, "Can't get mTree!\n");
|
||||
@ -53,7 +54,7 @@ XULTreeAccessible::
|
||||
nsCOMPtr<nsIAutoCompletePopup> autoCompletePopupElm =
|
||||
do_QueryInterface(parentContent);
|
||||
if (autoCompletePopupElm)
|
||||
mFlags |= eAutoCompletePopupAccessible;
|
||||
mGenericTypes |= eAutoCompletePopup;
|
||||
}
|
||||
|
||||
mAccessibleCache.Init(kDefaultTreeCacheSize);
|
||||
|
@ -28,7 +28,7 @@ XULTreeGridAccessible::
|
||||
XULTreeGridAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
XULTreeAccessible(aContent, aDoc), xpcAccessibleTable(this)
|
||||
{
|
||||
mFlags |= eTableAccessible;
|
||||
mGenericTypes |= eTable;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@ -280,7 +280,7 @@ XULTreeGridRowAccessible::
|
||||
nsITreeView* aTreeView, int32_t aRow) :
|
||||
XULTreeItemAccessibleBase(aContent, aDoc, aTreeAcc, aTree, aTreeView, aRow)
|
||||
{
|
||||
mFlags |= eTableRowAccessible;
|
||||
mGenericTypes |= eTableRow;
|
||||
|
||||
mAccessibleCache.Init(kDefaultTreeCacheSize);
|
||||
}
|
||||
|
@ -275,7 +275,7 @@ NS_QUERYFRAME_TAIL_INHERITING(nsObjectFrameSuper)
|
||||
a11y::AccType
|
||||
nsObjectFrame::AccessibleType()
|
||||
{
|
||||
return a11y::ePlugin;
|
||||
return a11y::ePluginType;
|
||||
}
|
||||
|
||||
#ifdef XP_WIN
|
||||
|
Loading…
Reference in New Issue
Block a user