WebRemoteFrameImpl* createRemoteChild(WebRemoteFrame* parent, WebRemoteFrameClient* client, const WebString& name) { return toWebRemoteFrameImpl(parent->createRemoteChild( WebTreeScopeType::Document, name, nameToUniqueName(name), WebSandboxFlags::None, client, nullptr)); }
WebRemoteFrame* WebRemoteFrameImpl::createRemoteChild(WebTreeScopeType scope, const WebString& name, WebSandboxFlags sandboxFlags, WebRemoteFrameClient* client) { WebRemoteFrameImpl* child = toWebRemoteFrameImpl(WebRemoteFrame::create(scope, client)); WillBeHeapHashMap<WebFrame*, OwnPtrWillBeMember<FrameOwner>>::AddResult result = m_ownersForChildren.add(child, RemoteBridgeFrameOwner::create(nullptr, static_cast<SandboxFlags>(sandboxFlags), WebFrameOwnerProperties())); appendChild(child); child->initializeCoreFrame(frame()->host(), result.storedValue->value.get(), name, nullAtom); return child; }
ALWAYS_INLINE bool WebFrame::isFrameAlive(const WebFrame* frame) { if (!frame) return true; if (frame->isWebLocalFrame()) return ThreadHeap::isHeapObjectAlive(toWebLocalFrameImpl(frame)); return ThreadHeap::isHeapObjectAlive(toWebRemoteFrameImpl(frame)); }
WebRemoteFrame* WebRemoteFrameImpl::createRemoteChild(const WebString& name, WebRemoteFrameClient* client) { WebRemoteFrameImpl* child = toWebRemoteFrameImpl(WebRemoteFrame::create(client)); WillBeHeapHashMap<WebFrame*, OwnPtrWillBeMember<FrameOwner> >::AddResult result = m_ownersForChildren.add(child, adoptPtrWillBeNoop(new PlaceholderFrameOwner)); appendChild(child); child->initializeCoreFrame(frame()->host(), result.storedValue->value.get(), name); return child; }
ALWAYS_INLINE void WebFrame::traceFrameImpl(VisitorDispatcher visitor, WebFrame* frame) { if (!frame) return; if (frame->isWebLocalFrame()) visitor->trace(toWebLocalFrameImpl(frame)); else visitor->trace(toWebRemoteFrameImpl(frame)); }