RenderNamedFlowThread* FlowThreadController::ensureRenderFlowThreadWithName(const AtomicString& name) { if (!m_renderNamedFlowThreadList) m_renderNamedFlowThreadList = adoptPtr(new RenderNamedFlowThreadList()); else { for (RenderNamedFlowThreadList::iterator iter = m_renderNamedFlowThreadList->begin(); iter != m_renderNamedFlowThreadList->end(); ++iter) { RenderNamedFlowThread* flowRenderer = *iter; if (flowRenderer->flowThreadName() == name) return flowRenderer; } } NamedFlowCollection* namedFlows = m_view->document().namedFlows(); // Sanity check for the absence of a named flow in the "CREATED" state with the same name. ASSERT(!namedFlows->flowByName(name)); RenderNamedFlowThread* flowRenderer = RenderNamedFlowThread::createAnonymous(&m_view->document(), namedFlows->ensureFlowWithName(name)); flowRenderer->setStyle(RenderFlowThread::createFlowThreadStyle(m_view->style())); m_renderNamedFlowThreadList->add(flowRenderer); // Keep the flow renderer as a child of RenderView. m_view->addChild(flowRenderer); setIsRenderNamedFlowThreadOrderDirty(true); return flowRenderer; }
RenderNamedFlowThread* RenderView::ensureRenderFlowThreadWithName(const AtomicString& name) { if (!m_renderNamedFlowThreadList) m_renderNamedFlowThreadList = adoptPtr(new RenderNamedFlowThreadList()); else { for (RenderNamedFlowThreadList::iterator iter = m_renderNamedFlowThreadList->begin(); iter != m_renderNamedFlowThreadList->end(); ++iter) { RenderNamedFlowThread* flowRenderer = *iter; if (flowRenderer->flowThreadName() == name) return flowRenderer; } } RenderNamedFlowThread* flowRenderer = new (renderArena()) RenderNamedFlowThread(document(), name); flowRenderer->setStyle(RenderFlowThread::createFlowThreadStyle(style())); addChild(flowRenderer); m_renderNamedFlowThreadList->add(flowRenderer); setIsRenderNamedFlowThreadOrderDirty(true); return flowRenderer; }