Bug 1874684 - Part 28: Return DateDuration from DifferenceISODateTime. r=mgaudet
[gecko.git] / accessible / base / XULMap.h
blob4687e8581404d67393dac426b0f7a6af026c5b08
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 XULMAP_TYPE(browser, OuterDocAccessible)
6 XULMAP_TYPE(button, XULButtonAccessible)
7 XULMAP_TYPE(checkbox, CheckboxAccessible)
8 XULMAP_TYPE(dropMarker, XULDropmarkerAccessible)
9 XULMAP_TYPE(editor, OuterDocAccessible)
10 XULMAP_TYPE(findbar, XULToolbarAccessible)
11 XULMAP_TYPE(groupbox, XULGroupboxAccessible)
12 XULMAP_TYPE(iframe, OuterDocAccessible)
13 XULMAP_TYPE(listheader, XULColumAccessible)
14 XULMAP_TYPE(menu, XULMenuitemAccessible)
15 XULMAP_TYPE(menubar, XULMenubarAccessible)
16 XULMAP_TYPE(menucaption, XULMenuitemAccessible)
17 XULMAP_TYPE(menuitem, XULMenuitemAccessible)
18 XULMAP_TYPE(menulist, XULComboboxAccessible)
19 XULMAP_TYPE(menuseparator, XULMenuSeparatorAccessible)
20 XULMAP_TYPE(notification, XULAlertAccessible)
21 XULMAP_TYPE(radio, XULRadioButtonAccessible)
22 XULMAP_TYPE(radiogroup, XULRadioGroupAccessible)
23 XULMAP_TYPE(richlistbox, XULListboxAccessible)
24 XULMAP_TYPE(richlistitem, XULListitemAccessible)
25 XULMAP_TYPE(statusbar, XULStatusBarAccessible)
26 XULMAP_TYPE(tab, XULTabAccessible)
27 XULMAP_TYPE(tabpanels, XULTabpanelsAccessible)
28 XULMAP_TYPE(tabs, XULTabsAccessible)
29 XULMAP_TYPE(toolbarseparator, XULToolbarSeparatorAccessible)
30 XULMAP_TYPE(toolbarspacer, XULToolbarSeparatorAccessible)
31 XULMAP_TYPE(toolbarspring, XULToolbarSeparatorAccessible)
32 XULMAP_TYPE(treecol, XULColumnItemAccessible)
33 XULMAP_TYPE(treecols, XULTreeColumAccessible)
34 XULMAP_TYPE(toolbar, XULToolbarAccessible)
35 XULMAP_TYPE(toolbarbutton, XULToolbarButtonAccessible)
37 XULMAP(description,
38 [](Element* aElement, LocalAccessible* aContext) -> LocalAccessible* {
39 if (aElement->ClassList()->Contains(u"tooltip-label"_ns)) {
40 // FIXME(emilio): Why this special case?
41 return nullptr;
44 return new XULLabelAccessible(aElement, aContext->Document());
47 XULMAP(tooltip,
48 [](Element* aElement, LocalAccessible* aContext) -> LocalAccessible* {
49 return new XULTooltipAccessible(aElement, aContext->Document());
52 XULMAP(label,
53 [](Element* aElement, LocalAccessible* aContext) -> LocalAccessible* {
54 if (aElement->ClassList()->Contains(u"text-link"_ns)) {
55 return new XULLinkAccessible(aElement, aContext->Document());
57 return new XULLabelAccessible(aElement, aContext->Document());
60 XULMAP(image,
61 [](Element* aElement, LocalAccessible* aContext) -> LocalAccessible* {
62 // Don't include nameless images in accessible tree.
63 if (!aElement->HasAttr(nsGkAtoms::tooltiptext)) {
64 return nullptr;
67 return new ImageAccessible(aElement, aContext->Document());
70 XULMAP(menupopup, [](Element* aElement, LocalAccessible* aContext) {
71 return CreateMenupopupAccessible(aElement, aContext);
74 XULMAP(panel,
75 [](Element* aElement, LocalAccessible* aContext) -> LocalAccessible* {
76 static const Element::AttrValuesArray sIgnoreTypeVals[] = {
77 nsGkAtoms::autocomplete_richlistbox, nsGkAtoms::autocomplete,
78 nullptr};
80 if (aElement->FindAttrValueIn(kNameSpaceID_None, nsGkAtoms::type,
81 sIgnoreTypeVals, eIgnoreCase) >= 0) {
82 return nullptr;
85 if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::noautofocus,
86 nsGkAtoms::_true, eCaseMatters)) {
87 return new XULAlertAccessible(aElement, aContext->Document());
90 return new EnumRoleAccessible<roles::PANE>(aElement,
91 aContext->Document());
94 XULMAP(tree,
95 [](Element* aElement, LocalAccessible* aContext) -> LocalAccessible* {
96 nsIContent* child =
97 nsTreeUtils::GetDescendantChild(aElement, nsGkAtoms::treechildren);
98 if (!child) return nullptr;
100 nsTreeBodyFrame* treeFrame = do_QueryFrame(child->GetPrimaryFrame());
101 if (!treeFrame) return nullptr;
103 RefPtr<nsTreeColumns> treeCols = treeFrame->Columns();
104 uint32_t count = treeCols->Count();
106 // Outline of list accessible.
107 if (count == 1) {
108 return new XULTreeAccessible(aElement, aContext->Document(),
109 treeFrame);
112 // Table or tree table accessible.
113 return new XULTreeGridAccessible(aElement, aContext->Document(),
114 treeFrame);