String AccessibilitySVGElement::helpText() const { // According to the SVG Accessibility API Mappings spec, the order of priority is: // 1. aria-describedby // 2. a direct child desc element // 3. for a use element, the accessible description calculated for the re-used content // 4. for text container elements, the text content, if not used for the name // 5. a direct child title element that provides a tooltip, if not used for the name String describedBy = ariaDescribedByAttribute(); if (!describedBy.isEmpty()) return describedBy; auto descriptionElements = childrenOfType<SVGDescElement>(*element()); if (auto descriptionChild = childElementWithMatchingLanguage(descriptionElements)) return descriptionChild->textContent(); if (is<SVGUseElement>(element())) { AccessibilityObject* target = targetForUseElement(); if (target) return target->helpText(); } String description = accessibilityDescription(); if (m_renderer->isSVGText()) { AccessibilityTextUnderElementMode mode; String text = textUnderElement(mode); if (!text.isEmpty() && text != description) return text; } auto titleElements = childrenOfType<SVGTitleElement>(*element()); if (auto titleChild = childElementWithMatchingLanguage(titleElements)) { if (titleChild->textContent() != description) return titleChild->textContent(); } return String(); }
void AccessibilitySearchFieldCancelButton::accessibilityText(Vector<AccessibilityText>& textOrder) { textOrder.append(AccessibilityText(accessibilityDescription(), AlternativeText)); }