HTML parser

1. receive data to parser

for chromium stack
WebUrlLoaderClient::didReceiveData
ResourceLoader::didReceiveData
MainResourceLoader::didReceiveData
ResourceLoader::didReceiveData
MainResourceLoader::addData
DocumentLoader::receivedData
DocumentLoader::commitLoad 
FrameLoaderClient::committedLoad (FrameLoaderClientAndroid.cpp)
//also call ResourceLoader::didReceiveResponse
DocumentLoader::commitData(also call DocumentWrite:setEncoding to create the document.)
DocumentWriter::addData
DecodedDataDocumentParser::appendBytes
HTMLDocumentParser::append
HTMLDocumentParser::pumpTokenizerIfPossible
HTMLDocumentParser::pumpTokenizer
HTMLTokenizer::nextToken


2. Lexical Parsing

HTMLTokenizer::nextToken

parser state



3. Grammer Parsing

HTMLDocumentParser::pumpTokenizer


4. Script Parsing

void HTMLDocumentParser::pumpTokenizer(SynchronousMode mode)

bool HTMLDocumentParser::canTakeNextToken(SynchronousMode mode, PumpSession& session)

bool HTMLDocumentParser::runScriptsForPausedTreeBuilder() //m_treeBuilder->setPaused(!shouldContinueParsing);




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章