1, Parser开始于HTMLDocumentParser的构造
HTMLDocumentParser::HTMLDocumentParser(HTMLDocument* document, bool reportErrors)
HTMLParserScheduler::create(this) // 设置触发器
&HTMLParserScheduler::continueNextChunkTimerFired
m_parser->resumeParsingAfterYield();
pumpTokenizer
nextToken
-1->
processEntity
consumeHTMLEntity
-1-> constructTreeFromToken
constructTreeFromAtomicToken
processToken
2,Rendering的开始,HTMLTreeBuilder构造
HTMLTreeBuilder::HTMLTreeBuilder
m_tree.openElements()->pushRootNode(fragment);
pushRootNodeCommon(rootNode);
HTMLElementStack::pushCommon(PassRefPtr<ContainerNode> node)
topNode()->beginParsingChildren();
attached()
createRendererIfNeeded();
createRendererAndStyle
createRenderer(document()->renderArena(), style.get());
newRenderer->setAnimatableStyle(style.release());
setStyle(style);