static AtkObject* accessibilityRootObjectWrapper(AtkObject* atkObject) { if (!AXObjectCache::accessibilityEnabled()) AXObjectCache::enableAccessibility(); WebPageAccessibilityObject* accessible = WEB_PAGE_ACCESSIBILITY_OBJECT(atkObject); if (!accessible->m_page) return 0; Page* corePage = accessible->m_page->corePage(); if (!corePage) return 0; Frame& coreFrame = corePage->mainFrame(); if (!coreFrame.document()) return 0; AXObjectCache* cache = coreFrame.document()->axObjectCache(); if (!cache) return nullptr; AccessibilityObject* coreRootObject = cache->rootObject(); if (!coreRootObject) return 0; AtkObject* rootObject = coreRootObject->wrapper(); if (!rootObject || !ATK_IS_OBJECT(rootObject)) return 0; return rootObject; }