Webkit初始化以及加載URL過程中各種對象的建立時序以及DOM樹的建立詳情分析

        衆所周知,Webkit需要創建DOM樹。爲此它需要創建WebView, Chrome,Page,Frame, Document, Document Parser, DOM Tree Builder(DOM樹的建造引擎),ScriptRunner, Resource Handle等等對象。 

        同時,還需要創建爲上面這些對象服務或者與之通信的支持對象,比如:與本地窗口相關的ChromeClient, 與FrameLoader事件相關的FrameLoaderClient,爲Document服務的Document Loader、DocumentWriter及DocumentParser; 分析HTML頁面詞語的HTMLMetaChractorParser、HTMLTokenizer;語法分析器服務的HTMLParserScheduler,爲DOM樹建立服務的HTMLConstrctionSite;爲網絡資源請求服務的ResourceLoader等等。

        當然,除了這裏列出的對象之外,還有許多對象比如SubResourceLoader等等沒有全列出。那麼,這麼多對象是啥時候創建的呢?按時間排序,我把她們排列如下:

WebView->ChromeClient->Chrome->Page->FrameLoaderClient->FrameLoader->Frame->

PolicyChecker->DocumentLoader->DocumentWriter->Document->HTMLDocumentParser->

TextResourceDecoder->HTMLMetaChractorParser->HTMLTokenizer->HTMLScripRunner->HTMLParserScheduler->

HTMLTreeBuilder->HTMLConstructionSite->HTMLElementFactory->MainResourceLoader->ResourceHandle

         具體的創建細節我畫了兩個時序圖:

圖一:初始化時(發起網絡請求Request之前)各對象的創建

圖二:發起網絡請求(Request)之後各種對象的創建以及DOM樹的建立詳細情況



        下一篇講講詞法分析器的工作過程。

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