void nsHTMLImageMapAccessible::CacheChildren() { if (!mMapElement) return; nsCOMPtr<nsIDOMHTMLCollection> mapAreas; mMapElement->GetAreas(getter_AddRefs(mapAreas)); if (!mapAreas) return; nsDocAccessible* document = GetDocAccessible(); PRUint32 areaCount = 0; mapAreas->GetLength(&areaCount); for (PRUint32 areaIdx = 0; areaIdx < areaCount; areaIdx++) { nsCOMPtr<nsIDOMNode> areaNode; mapAreas->Item(areaIdx, getter_AddRefs(areaNode)); if (!areaNode) return; nsCOMPtr<nsIContent> areaContent(do_QueryInterface(areaNode)); nsRefPtr<nsAccessible> area = new nsHTMLAreaAccessible(areaContent, mWeakShell); if (!document->BindToDocument(area, nsAccUtils::GetRoleMapEntry(areaContent)) || !AppendChild(area)) { return; } } }
void nsHTMLImageMapAccessible::CacheChildren() { if (!mMapElement) return; nsCOMPtr<nsIDOMHTMLCollection> mapAreas; mMapElement->GetAreas(getter_AddRefs(mapAreas)); if (!mapAreas) return; PRUint32 areaCount = 0; mapAreas->GetLength(&areaCount); for (PRUint32 areaIdx = 0; areaIdx < areaCount; areaIdx++) { nsCOMPtr<nsIDOMNode> areaNode; mapAreas->Item(areaIdx, getter_AddRefs(areaNode)); if (!areaNode) return; nsCOMPtr<nsIContent> areaContent(do_QueryInterface(areaNode)); nsRefPtr<nsAccessible> areaAcc = new nsHTMLAreaAccessible(areaContent, mWeakShell); if (!areaAcc) return; if (!areaAcc->Init()) { areaAcc->Shutdown(); return; } // We must respect ARIA on area elements (for the canvas map technique) areaAcc->SetRoleMapEntry(nsAccUtils::GetRoleMapEntry(areaContent)); if (!AppendChild(areaAcc)) return; } }