void HTMLElementStack::insertAbove(RawPtr<HTMLStackItem> item, ElementRecord* recordBelow) { ASSERT(item); ASSERT(recordBelow); ASSERT(m_top); ASSERT(!item->hasTagName(htmlTag)); ASSERT(!item->hasTagName(headTag)); ASSERT(!item->hasTagName(bodyTag)); ASSERT(m_rootNode); if (recordBelow == m_top) { push(item); return; } for (ElementRecord* recordAbove = m_top.get(); recordAbove; recordAbove = recordAbove->next()) { if (recordAbove->next() != recordBelow) continue; m_stackDepth++; recordAbove->setNext(new ElementRecord(item, recordAbove->releaseNext())); recordAbove->next()->element()->beginParsingChildren(); return; } ASSERT_NOT_REACHED(); }
void HTMLElementStack::push(RawPtr<HTMLStackItem> item) { ASSERT(!item->hasTagName(htmlTag)); ASSERT(!item->hasTagName(headTag)); ASSERT(!item->hasTagName(bodyTag)); ASSERT(m_rootNode); pushCommon(item); }
void HTMLElementStack::pushHTMLBodyElement(RawPtr<HTMLStackItem> item) { ASSERT(item->hasTagName(HTMLNames::bodyTag)); ASSERT(!m_bodyElement); m_bodyElement = item->element(); pushCommon(item); }
void HTMLElementStack::pushHTMLHtmlElement(RawPtr<HTMLStackItem> item) { ASSERT(item->hasTagName(htmlTag)); pushRootNodeCommon(item); }