tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

XULMap.h (5043B)


      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/. */
      4 
      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(menuseparator, XULMenuSeparatorAccessible)
     19 XULMAP_TYPE(notification, XULAlertAccessible)
     20 XULMAP_TYPE(radio, XULRadioButtonAccessible)
     21 XULMAP_TYPE(radiogroup, XULRadioGroupAccessible)
     22 XULMAP_TYPE(richlistbox, XULListboxAccessible)
     23 XULMAP_TYPE(richlistitem, XULListitemAccessible)
     24 XULMAP_TYPE(statusbar, XULStatusBarAccessible)
     25 XULMAP_TYPE(tab, XULTabAccessible)
     26 XULMAP_TYPE(tabpanels, XULTabpanelsAccessible)
     27 XULMAP_TYPE(tabs, XULTabsAccessible)
     28 XULMAP_TYPE(toolbarseparator, XULToolbarSeparatorAccessible)
     29 XULMAP_TYPE(toolbarspacer, XULToolbarSeparatorAccessible)
     30 XULMAP_TYPE(toolbarspring, XULToolbarSeparatorAccessible)
     31 XULMAP_TYPE(treecol, XULColumnItemAccessible)
     32 XULMAP_TYPE(treecols, XULTreeColumAccessible)
     33 XULMAP_TYPE(toolbar, XULToolbarAccessible)
     34 XULMAP_TYPE(toolbarbutton, XULToolbarButtonAccessible)
     35 
     36 XULMAP(description,
     37       [](Element* aElement, LocalAccessible* aContext) -> LocalAccessible* {
     38         if (aElement->ClassList()->Contains(u"tooltip-label"_ns)) {
     39           // FIXME(emilio): Why this special case?
     40           return nullptr;
     41         }
     42 
     43         return new XULLabelAccessible(aElement, aContext->Document());
     44       })
     45 
     46 XULMAP(tooltip,
     47       [](Element* aElement, LocalAccessible* aContext) -> LocalAccessible* {
     48         return new XULTooltipAccessible(aElement, aContext->Document());
     49       })
     50 
     51 XULMAP(label,
     52       [](Element* aElement, LocalAccessible* aContext) -> LocalAccessible* {
     53         if (aElement->ClassList()->Contains(u"text-link"_ns)) {
     54           return new XULLinkAccessible(aElement, aContext->Document());
     55         }
     56         return new XULLabelAccessible(aElement, aContext->Document());
     57       })
     58 
     59 XULMAP(image,
     60       [](Element* aElement, LocalAccessible* aContext) -> LocalAccessible* {
     61         // Don't include nameless images in accessible tree.
     62         if (!aElement->HasAttr(nsGkAtoms::tooltiptext)) {
     63           return nullptr;
     64         }
     65 
     66         return new ImageAccessible(aElement, aContext->Document());
     67       })
     68 
     69 XULMAP(menulist,
     70       [](Element* aElement, LocalAccessible* aContext) -> LocalAccessible* {
     71         nsAutoString domID;
     72         if (nsCoreUtils::GetID(aElement, domID)) {
     73           if (domID.Equals(u"ContentSelectDropdown"_ns)) {
     74             return new XULContentSelectDropdownAccessible(
     75                 aElement, aContext->Document());
     76           }
     77         }
     78 
     79         return new XULComboboxAccessible(aElement, aContext->Document());
     80       })
     81 
     82 XULMAP(menupopup, [](Element* aElement, LocalAccessible* aContext) {
     83  return CreateMenupopupAccessible(aElement, aContext);
     84 })
     85 
     86 XULMAP(panel,
     87       [](Element* aElement, LocalAccessible* aContext) -> LocalAccessible* {
     88         static const Element::AttrValuesArray sIgnoreTypeVals[] = {
     89             nsGkAtoms::autocomplete_richlistbox, nsGkAtoms::autocomplete,
     90             nullptr};
     91 
     92         if (aElement->FindAttrValueIn(kNameSpaceID_None, nsGkAtoms::type,
     93                                       sIgnoreTypeVals, eIgnoreCase) >= 0) {
     94           return nullptr;
     95         }
     96 
     97         if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::noautofocus,
     98                                   nsGkAtoms::_true, eCaseMatters)) {
     99           return new XULAlertAccessible(aElement, aContext->Document());
    100         }
    101 
    102         return new EnumRoleAccessible<roles::PANE>(aElement,
    103                                                    aContext->Document());
    104       })
    105 
    106 XULMAP(tree,
    107       [](Element* aElement, LocalAccessible* aContext) -> LocalAccessible* {
    108         nsIContent* child =
    109             nsTreeUtils::GetDescendantChild(aElement, nsGkAtoms::treechildren);
    110         if (!child) return nullptr;
    111 
    112         nsTreeBodyFrame* treeFrame = do_QueryFrame(child->GetPrimaryFrame());
    113         if (!treeFrame) return nullptr;
    114 
    115         RefPtr<nsTreeColumns> treeCols = treeFrame->Columns();
    116         uint32_t count = treeCols->Count();
    117 
    118         // Outline of list accessible.
    119         if (count == 1) {
    120           return new XULTreeAccessible(aElement, aContext->Document(),
    121                                        treeFrame);
    122         }
    123 
    124         // Table or tree table accessible.
    125         return new XULTreeGridAccessible(aElement, aContext->Document(),
    126                                          treeFrame);
    127       })