const gchar * getDocumentAttributeValueCB(AtkDocument *aDocument, const gchar *aAttrName) { ProxyAccessible* proxy = nullptr; DocAccessible* document = nullptr; AccessibleWrap* accWrap = GetAccessibleWrap(ATK_OBJECT(aDocument)); if (accWrap) { if (!accWrap->IsDoc()) { return nullptr; } document = accWrap->AsDoc(); } else { proxy = GetProxy(ATK_OBJECT(aDocument)); if (!proxy) { return nullptr; } } nsAutoString attrValue; if (!strcasecmp(aAttrName, kDocTypeName)) { if (document) { document->DocType(attrValue); } else { proxy->DocType(attrValue); } } else if (!strcasecmp(aAttrName, kDocUrlName)) { if (document) { document->URL(attrValue); } else { proxy->URL(attrValue); } } else if (!strcasecmp(aAttrName, kMimeTypeName)) { if (document) { document->MimeType(attrValue); } else { proxy->MimeType(attrValue); } } else { return nullptr; } return attrValue.IsEmpty() ? nullptr : AccessibleWrap::ReturnString(attrValue); }