Webkit初始化以及加载URL过程中各种对象的建立时序以及DOM树的建立详情分析
2015-03-20 12:22
429 查看
众所周知,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树的建立详细情况
下一篇讲讲词法分析器的工作过程。
同时,还需要创建为上面这些对象服务或者与之通信的支持对象,比如:与本地窗口相关的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树的建立详细情况
下一篇讲讲词法分析器的工作过程。
相关文章推荐
- Webkit初始化以及载入URL过程中各种对象的建立时序以及DOM树的建立详情分析
- java程序在执行过程中,类,对象以及它们成员加载、初始化的顺序如下:
- java学习笔记_类建立对象初始化过程分析
- 各种数据库JDBC驱动加载注册方式以及建立连接时的URL字符串
- struts ModuleConfig类加载初始化的过程以及RequestProcessor类源码分析
- 分析内核初始化时根内存盘的加载过程
- 认识DOM和DOM加载过程以及如何让DOM加载完成后再执行js脚本文件
- 图解Java对象初始化过程以及方法调用
- Webkit中HTML5 Video的实现分析 (四) - 视频加载及播放的时序图
- [android源码分析]bluez启动过程中的各种plugin的初始化(一)--__bluetooth_builtin数组所耍的花样
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- 分析内核初始化时根内存盘的加载过程
- TCP连接的建立以及利用tcpdump分析连接建立的过程
- webkit 加载plugin的过程分析(原)
- 你所不知道的SQL Server数据库启动过程,以及启动不起来的各种问题的分析及解决技巧
- 你所不知道的SQL Server数据库启动过程,以及启动不起来的各种问题的分析及解决技巧
- nib 加载过程分析以及对File’s Owner的理解
- JS , CSS ,image HTML DOM的加载过程 以及 总结JS的基本用法
- 构造方法以及对象初始化过程
- 图解Java对象初始化过程以及方法调用