AXObjectCache::~AXObjectCache() { m_notificationPostTimer.stop(); HashMap<AXID, RefPtr<AXObject> >::iterator end = m_objects.end(); for (HashMap<AXID, RefPtr<AXObject> >::iterator it = m_objects.begin(); it != end; ++it) { AXObject* obj = (*it).value.get(); detachWrapper(obj); obj->detach(); removeAXID(obj); } }
void AXObjectCacheImpl::dispose() { m_notificationPostTimer.stop(); for (auto& entry : m_objects) { AXObject* obj = entry.value; obj->detach(); removeAXID(obj); } #if ENABLE(ASSERT) m_hasBeenDisposed = true; #endif }
void AXObjectCacheImpl::remove(AXID axID) { if (!axID) return; // first fetch object to operate some cleanup functions on it AXObject* obj = m_objects.get(axID); if (!obj) return; obj->detach(); removeAXID(obj); // finally remove the object if (!m_objects.take(axID)) return; ASSERT(m_objects.size() >= m_idsInUse.size()); }