예제 #1
0
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();
}
예제 #3
0
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);
}
예제 #4
0
InjectedBundleNodeHandle::~InjectedBundleNodeHandle()
{
    domHandleCache().remove(m_node.ptr());
}
예제 #5
0
InjectedBundleRangeHandle::~InjectedBundleRangeHandle()
{
    domHandleCache().remove(m_range.get());
}