--- a/accessible/base/XULMap.h
+++ b/accessible/base/XULMap.h
@@ -39,158 +39,148 @@ XULMAP_TYPE(treecol, XULColumnItemAccess
XULMAP_TYPE(treecolpicker, XULButtonAccessible)
XULMAP_TYPE(treecols, XULTreeColumAccessible)
XULMAP_TYPE(toolbar, XULToolbarAccessible)
XULMAP_TYPE(toolbarbutton, XULToolbarButtonAccessible)
XULMAP_TYPE(tooltip, XULTooltipAccessible)
XULMAP(
colorpicker,
- [](nsIContent* aContent, Accessible* aContext) -> Accessible* {
- if (aContent->IsElement() &&
- aContent->AsElement()->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type,
- nsGkAtoms::button, eIgnoreCase)) {
- return new XULColorPickerAccessible(aContent, aContext->Document());
+ [](Element* aElement, Accessible* aContext) -> Accessible* {
+ if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type,
+ nsGkAtoms::button, eIgnoreCase)) {
+ return new XULColorPickerAccessible(aElement, aContext->Document());
}
return nullptr;
}
)
XULMAP(
label,
- [](nsIContent* aContent, Accessible* aContext) -> Accessible* {
- if (aContent->IsElement() &&
- aContent->AsElement()->ClassList()->Contains(NS_LITERAL_STRING("text-link"))) {
- return new XULLinkAccessible(aContent, aContext->Document());
+ [](Element* aElement, Accessible* aContext) -> Accessible* {
+ if (aElement->ClassList()->Contains(NS_LITERAL_STRING("text-link"))) {
+ return new XULLinkAccessible(aElement, aContext->Document());
}
- return new XULLabelAccessible(aContent, aContext->Document());
+ return new XULLabelAccessible(aElement, aContext->Document());
}
)
XULMAP(
image,
- [](nsIContent* aContent, Accessible* aContext) -> Accessible* {
- if (!aContent->IsElement()) {
+ [](Element* aElement, Accessible* aContext) -> Accessible* {
+ if (aElement->HasAttr(kNameSpaceID_None, nsGkAtoms::onclick)) {
+ return new XULToolbarButtonAccessible(aElement, aContext->Document());
+ }
+
+ if (aElement->ClassList()->Contains(NS_LITERAL_STRING("colorpickertile"))) {
+ return new XULColorPickerTileAccessible(aElement, aContext->Document());
+ }
+
+ // Don't include nameless images in accessible tree.
+ if (!aElement->HasAttr(kNameSpaceID_None, nsGkAtoms::tooltiptext)) {
return nullptr;
}
- if (aContent->AsElement()->HasAttr(kNameSpaceID_None, nsGkAtoms::onclick)) {
- return new XULToolbarButtonAccessible(aContent, aContext->Document());
- }
-
- if (aContent->AsElement()->ClassList()->Contains(NS_LITERAL_STRING("colorpickertile"))) {
- return new XULColorPickerTileAccessible(aContent, aContext->Document());
- }
-
- // Don't include nameless images in accessible tree.
- if (!aContent->AsElement()->HasAttr(kNameSpaceID_None, nsGkAtoms::tooltiptext)) {
- return nullptr;
- }
-
- return new ImageAccessibleWrap(aContent, aContext->Document());
+ return new ImageAccessibleWrap(aElement, aContext->Document());
}
)
XULMAP(
listcell,
- [](nsIContent* aContent, Accessible* aContext) -> Accessible* {
+ [](Element* aElement, Accessible* aContext) -> Accessible* {
// Only create cells if there's more than one per row.
- nsIContent* listItem = aContent->GetParent();
+ nsIContent* listItem = aElement->GetParent();
if (!listItem) {
return nullptr;
}
for (nsIContent* child = listItem->GetFirstChild(); child;
child = child->GetNextSibling()) {
- if (child->IsXULElement(nsGkAtoms::listcell) && child != aContent) {
- return new XULListCellAccessibleWrap(aContent, aContext->Document());
+ if (child->IsXULElement(nsGkAtoms::listcell) && child != aElement) {
+ return new XULListCellAccessibleWrap(aElement, aContext->Document());
}
}
return nullptr;
}
)
XULMAP(
menupopup,
- [](nsIContent* aContent, Accessible* aContext) {
- return CreateMenupopupAccessible(aContent, aContext);
+ [](Element* aElement, Accessible* aContext) {
+ return CreateMenupopupAccessible(aElement, aContext);
}
)
XULMAP(
panel,
- [](nsIContent* aContent, Accessible* aContext) -> Accessible* {
+ [](Element* aElement, Accessible* aContext) -> Accessible* {
static const Element::AttrValuesArray sIgnoreTypeVals[] =
{ &nsGkAtoms::autocomplete_richlistbox, &nsGkAtoms::autocomplete, nullptr };
- if (!aContent->IsElement() ||
- aContent->AsElement()->FindAttrValueIn(kNameSpaceID_None, nsGkAtoms::type,
- sIgnoreTypeVals, eIgnoreCase) >= 0) {
+ if (aElement->FindAttrValueIn(kNameSpaceID_None, nsGkAtoms::type,
+ sIgnoreTypeVals, eIgnoreCase) >= 0) {
return nullptr;
}
- if (aContent->AsElement()->AttrValueIs(kNameSpaceID_None,
- nsGkAtoms::noautofocus,
- nsGkAtoms::_true, eCaseMatters)) {
- return new XULAlertAccessible(aContent, aContext->Document());
+ if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::noautofocus,
+ nsGkAtoms::_true, eCaseMatters)) {
+ return new XULAlertAccessible(aElement, aContext->Document());
}
- return new EnumRoleAccessible<roles::PANE>(aContent, aContext->Document());
+ return new EnumRoleAccessible<roles::PANE>(aElement, aContext->Document());
}
)
XULMAP(
popup,
- [](nsIContent* aContent, Accessible* aContext) {
- return CreateMenupopupAccessible(aContent, aContext);
+ [](Element* aElement, Accessible* aContext) {
+ return CreateMenupopupAccessible(aElement, aContext);
}
)
XULMAP(
textbox,
- [](nsIContent* aContent, Accessible* aContext) -> Accessible* {
- if (aContent->IsElement() &&
- aContent->AsElement()->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type,
- nsGkAtoms::autocomplete, eIgnoreCase)) {
- return new XULComboboxAccessible(aContent, aContext->Document());
+ [](Element* aElement, Accessible* aContext) -> Accessible* {
+ if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type,
+ nsGkAtoms::autocomplete, eIgnoreCase)) {
+ return new XULComboboxAccessible(aElement, aContext->Document());
}
- return new EnumRoleAccessible<roles::SECTION>(aContent, aContext->Document());
+ return new EnumRoleAccessible<roles::SECTION>(aElement, aContext->Document());
}
)
XULMAP(
thumb,
- [](nsIContent* aContent, Accessible* aContext) -> Accessible* {
- if (aContent->IsElement() &&
- aContent->AsElement()->ClassList()->Contains(NS_LITERAL_STRING("scale-thumb"))) {
- return new XULThumbAccessible(aContent, aContext->Document());
+ [](Element* aElement, Accessible* aContext) -> Accessible* {
+ if (aElement->ClassList()->Contains(NS_LITERAL_STRING("scale-thumb"))) {
+ return new XULThumbAccessible(aElement, aContext->Document());
}
return nullptr;
}
)
XULMAP(
tree,
- [](nsIContent* aContent, Accessible* aContext) -> Accessible* {
- nsIContent* child = nsTreeUtils::GetDescendantChild(aContent,
+ [](Element* aElement, Accessible* aContext) -> Accessible* {
+ nsIContent* child = nsTreeUtils::GetDescendantChild(aElement,
nsGkAtoms::treechildren);
if (!child)
return nullptr;
nsTreeBodyFrame* treeFrame = do_QueryFrame(child->GetPrimaryFrame());
if (!treeFrame)
return nullptr;
RefPtr<nsTreeColumns> treeCols = treeFrame->Columns();
int32_t count = 0;
treeCols->GetCount(&count);
// Outline of list accessible.
if (count == 1) {
- return new XULTreeAccessible(aContent, aContext->Document(), treeFrame);
+ return new XULTreeAccessible(aElement, aContext->Document(), treeFrame);
}
// Table or tree table accessible.
- return new XULTreeGridAccessibleWrap(aContent, aContext->Document(), treeFrame);
+ return new XULTreeGridAccessibleWrap(aElement, aContext->Document(), treeFrame);
}
)
--- a/accessible/base/nsAccessibilityService.cpp
+++ b/accessible/base/nsAccessibilityService.cpp
@@ -144,30 +144,30 @@ MustBeAccessible(nsIContent* aContent, D
return false;
}
/**
* Used by XULMap.h to map both menupopup and popup elements
*/
#ifdef MOZ_XUL
Accessible*
-CreateMenupopupAccessible(nsIContent* aContent, Accessible* aContext)
+CreateMenupopupAccessible(Element* aElement, Accessible* aContext)
{
#ifdef MOZ_ACCESSIBILITY_ATK
// ATK considers this node to be redundant when within menubars, and it makes menu
// navigation with assistive technologies more difficult
// XXX In the future we will should this for consistency across the nsIAccessible
// implementations on each platform for a consistent scripting environment, but
// then strip out redundant accessibles in the AccessibleWrap class for each platform.
- nsIContent *parent = aContent->GetParent();
+ nsIContent *parent = aElement->GetParent();
if (parent && parent->IsXULElement(nsGkAtoms::menu))
return nullptr;
#endif
- return new XULMenupopupAccessible(aContent, aContext->Document());
+ return new XULMenupopupAccessible(aElement, aContext->Document());
}
#endif
////////////////////////////////////////////////////////////////////////////////
// Accessible constructors
static Accessible*
New_HTMLLink(nsIContent* aContent, Accessible* aContext)
@@ -323,18 +323,18 @@ static const HTMLMarkupMapInfo sHTMLMark
#ifdef MOZ_XUL
#define XULMAP(atom, ...) \
{ &nsGkAtoms::atom, __VA_ARGS__ },
#define XULMAP_TYPE(atom, new_type) \
XULMAP( \
atom, \
- [](nsIContent* aContent, Accessible* aContext) -> Accessible* { \
- return new new_type(aContent, aContext->Document()); \
+ [](Element* aElement, Accessible* aContext) -> Accessible* { \
+ return new new_type(aElement, aContext->Document()); \
} \
)
static const XULMarkupMapInfo sXULMarkupMapList[] = {
#include "XULMap.h"
};
#undef XULMAP_TYPE
@@ -1236,17 +1236,17 @@ nsAccessibilityService::CreateAccessible
}
}
#ifdef MOZ_XUL
// Prefer to use XUL to decide if and what kind of accessible to create.
const XULMarkupMapInfo* xulMap =
mXULMarkupMap.Get(content->NodeInfo()->NameAtom());
if (xulMap && xulMap->new_func) {
- newAcc = xulMap->new_func(content, aContext);
+ newAcc = xulMap->new_func(content->AsElement(), aContext);
}
#endif
// Any XUL box can be used as tabpanel, make sure we create a proper
// accessible for it.
if (!newAcc && aContext->IsXULTabpanels() &&
content->GetParent() == aContext->GetContent()) {
LayoutFrameType frameType = frame->Type();