Ref<InjectedBundleNodeHandle> InjectedBundleNodeHandle::getOrCreate(Node& node) { DOMHandleCache::AddResult result = domHandleCache().add(&node, nullptr); if (!result.isNewEntry) return Ref<InjectedBundleNodeHandle>(*result.iterator->value); Ref<InjectedBundleNodeHandle> nodeHandle = InjectedBundleNodeHandle::create(node); result.iterator->value = nodeHandle.ptr(); return nodeHandle; }
PassRefPtr<InjectedBundleNodeHandle> InjectedBundleNodeHandle::getOrCreate(Node* node) { if (!node) return 0; DOMHandleCache::AddResult result = domHandleCache().add(node, nullptr); if (!result.isNewEntry) return PassRefPtr<InjectedBundleNodeHandle>(result.iterator->value); RefPtr<InjectedBundleNodeHandle> nodeHandle = InjectedBundleNodeHandle::create(node); result.iterator->value = nodeHandle.get(); return nodeHandle.release(); }
PassRefPtr<InjectedBundleRangeHandle> InjectedBundleRangeHandle::getOrCreate(Range* range) { if (!range) return 0; DOMHandleCache::AddResult result = domHandleCache().add(range, nullptr); if (!result.isNewEntry) return PassRefPtr<InjectedBundleRangeHandle>(result.iterator->value); auto rangeHandle = InjectedBundleRangeHandle::create(range); result.iterator->value = rangeHandle.ptr(); return WTFMove(rangeHandle); }
InjectedBundleNodeHandle::~InjectedBundleNodeHandle() { domHandleCache().remove(m_node.ptr()); }
InjectedBundleRangeHandle::~InjectedBundleRangeHandle() { domHandleCache().remove(m_range.get()); }