receive data to parse

1. receive data to parse

a .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

 

b.for apache

LoadListener::commitLoad

WebCoreResourceLoader::nativeAddData

WebCoreResourceLoader::AddData

ResourceHandleClient::didReceiveData

ResourceLoader::didReceiveData

MainResourceLoader::didReceiveData

ResourceLoader::didReceiveData

MainResourceLoader::addData

DocumentLoader::receivedData

DocumentLoader::commitLoad

FrameLoaderClientAndroid::committedLoad

DocumentLoader::commitData

DocumentWriter::addData

DecodedDataDocumentParser::appendBytes

HTMLDocumentParser::append

HTMLDocumentParser::pumpTokenizerIfPossible

HTMLDocumentParser::pumpTokenizer

HTMLTokenizer::nextToken

 

HTMLTokenizer::nextToken, generate HTMLTokenizer from document;

HTMLTreeBuilder::constructTreeFromToken, generate dom tree with HTMLTokenizer

2 FrameLoaderClient::committedLoad

  1. void FrameLoaderClientAndroid::committedLoad(DocumentLoader* loader,  
  2.     const char* data, int length) {  
  3.     if (!m_manualLoader)  
  4.         loader->commitData(data, length);  
  5.   
  6.     // commit data may have created a manual plugin loader  
  7.     if (m_manualLoader) {  
  8.         if (!m_hasSentResponseToPlugin) {  
  9.             m_manualLoader->didReceiveResponse(loader->response());  
  10.             // Failure could cause the main document to have an error causing  
  11.             // the manual loader to be reset.  
  12.             if (!m_manualLoader)  
  13.                 return;  
  14.             m_hasSentResponseToPlugin = true;  
  15.         }  
  16.         m_manualLoader->didReceiveData(data, length);  
  17.     }  
  18. }  

 

 

3.Document Create

MainResourceLoader::didReceiveData

ResourceLoader::didReceiveData

MainResourceLoader::addData

DocumentLoader::receivedData

DocumentLoader::commitLoad

WebFrameLoaderClient::committedLoad(FrameLoaderClient)

DocumentLoader::commitData (also call DocumentWriter::addData to Parser)

DocumentWriter::setEncoding

FrameLoader::willSetEncoding() 

FrameLoader::receivedFirstData()

DocumentWriter::begin

DocumentWriter::createDocument() //after the document was created, it was set to the frame()

 

 

4. the process from loadurl to network (chromium stack)

a.WebView.java 

loadUrl

b.WebViewCore.java

loadUrl

c.BrowserFrame.java 

loadUrl

nativeLoadUrl

d.WebCoreFrameBridge.cpp

LoadUrl

--pFrame->loader()->load(request, false);

e.FrameLoader

load(const ResourceRequest& request, bool lockHistory)

----FrameLoaderClient->createDocumentLoader()

load(DocumentLoader* newDocumentLoader)

----addExtraFieldsToMainResourceRequest

----loadWithDocumentLoader

callContinueLoadAfterNavigationPolicy()

continueLoadAfterWillSubmitForm()

f. DocumentLoader

startLoadingMainResource

g.MainResourceLoader

load

loadNow.

h.ResourceHandle

create

i.ResourceHandleAndroid.cpp

start

j.ResourceLoaderAndroid

start

k.WebUrlLoader

start

l.WebUrlLoaderClient

start.

......

to chromium stack.

also another imporant classes

ResourceRequest and ResourceResonse

posted @ 2012-04-06 21:41  cascais  阅读(224)  评论(0编辑  收藏  举报