WebKit引擎入门介绍
1 WebKit简介 .................................................................................................................................. 2
1.1 简介 ................................................................................................................................... 2 1.2 WebKit主要特点 .............................................................................................................. 3
1.2.1 引擎 ....................................................................................................................... 3 1.2.2 开源 ....................................................................................................................... 3 1.2.3高性能 .................................................................................................................... 3 1.2.4 可移植性 ............................................................................................................... 3 1.2.5 兼容性 ................................................................................................................... 3 1.2.6 遵守标准 ............................................................................................................... 3 1.2.7 安全 ....................................................................................................................... 4 1.3 WebKit主要组成 .............................................................................................................. 4
1.3.1 体系结构 ............................................................................................................... 4
2 WebCore介绍 ................................................................................................................................ 5
2.1 WebCore目录结构 ............................................................................................................ 5 2.2 Http请求在WebCore中的主要流程 .............................................................................. 6
2.2.1 工作流程 ............................................................................................................... 6 2.2.2 处理流程 ............................................................................................................... 8
3 WebKit的DOM分析 .................................................................................................................... 10
3.1 DOM原理 .......................................................................................................................... 10
3.1.1 DocView 模型 ..................................................................................................... 10 3.2 DOM解析基本算法 .......................................................................................................... 11
3.2.1 基本算法思想 ..................................................................................................... 11
4 WebKit的Ports介绍 ................................................................................................................ 15
4.1 Port概述 ........................................................................................................................ 15 4.2 WebKit Port移植实现分析 .......................................................................................... 15
4.2.1 WebCore交互接口 .............................................................................................. 15
4.2.2 连接模块loader ................................................................................................ 16 4.2.3 显示模块WebView和WebFrame ........................................................................ 16 4.2.4 Android中对Port移植方面的实现 ................................................................ 16 4.2.5 小结 ..................................................................................................................... 17
5 WebKit的JavascriptCore介绍 .............................................................................................. 17
5.1 JavaScriptCore实现特点 ............................................................................................ 18 5.2 JavaScriptCore目录的内容 ........................................................................................ 18 5.3 JavaScriptCore与WebCore交互 ................................................................................ 18 6 WebKit For Android ................................................................................................................. 19
6.1 WebKit模块目录结构 .................................................................................................... 19 6.2 Java层框架 .................................................................................................................... 21
6.2.1 主要类描述 ......................................................................................................... 21 6.2.2 数据载入器的设计 ............................................................................................. 23 6.3 C层框架 .......................................................................................................................... 24 6.4 WebView操作分析 .......................................................................................................... 24
6.4.1 WebKit模块初始化 ............................................................................................ 24 6.4.2 数据载入 ............................................................................................................. 27 6.5 刷新绘制 ......................................................................................................................... 28
1 WebKit简介
1.1 简介
WebKit 的前身是 KDE 小组的 KHTML。Apple 将 KHTML 发扬光大,推出了装备 KHTML 改进型的 WebKit 引擎的浏览器Safari,获得了非常好的反响。WebKit 引擎比 Gecko 引擎更受程序员欢迎的原因,除了其引擎的高效稳定,兼容性好外,其源码结构清晰,易于维 护,是一个重要的原因。现在浏览器的内核引擎,基本上是三分天下:
Trident: IE 以Trident 作为内核引擎。 Gecko: Firefox 是基于 Gecko 开发。
WebKit: Safari, Google Chrome 基于 Webkit 开发。 还有一个Presto:Opera,任天堂DS浏览器,发展也良好。
WebKit 内核在手机上的应用十分广泛,例如 Google 的手机Gphone、 Apple 的 iPhone, Nokia’s Series 60 browser 等所使用的 Browser 内核引擎,都是基于 WebKit。
1.2 WebKit主要特点
1.2.1 引擎
该项目的主要重点是内容部署在万维网上的,基于标准的技术,如HTML,CSS , JavaScript和DOM中。并能够嵌入WebKit在其他应用程序中,并用它作为一般用途的显示和交互引擎。
1.2.2 开源
WebKit继续自由使用的两个开源协议LGPL和BSD,在Webkit中,WebCore和JavaScriptCore是LGPL,其余是BSD授权。
1.2.3高性能
维持和改善的速度和内存使用是一个重要的目标。随着网页内容越来越丰富,越来越复杂,作为网络浏览器上运行的更有限的设备,需要提升性能,加快浏览速度。
1.2.4 可移植性
WebKit 移植到各种各样的台式机、移动、嵌入式平台和其他平台。WebKit 提供必要的基础设施,并酌情提供友好嵌入的API。
1.2.5 兼容性
用户浏览网页,兼容现有的网站是必不可少的。WebKit致力于维护和改善兼容现有的网络内容,利用回归测试,以保持WebKit的兼容性。
1.2.6 遵守标准
WebKit的目标是遵守有关的Web标准,并支持新的标准。
1.2.7 安全
保护用户安全的行为是至关重要的。迅速修复安全问题,以保护用户系统和维护他们对WebKit的信任。
1.3 WebKit主要组成
WebKit 主要包括三个部分WebCore、JavascriptCore 及Ports部分。WebKit 专注的核心部分主要是:分析Html,Javascript 的解析和布局渲染技术。分别在由WebCore/html,JavascriptCore 和WebCore/rendering来完成。
1.3.1 体系结构
WebKit的体系结构如下图:
2 WebCore介绍
2.1 WebCore目录结构
根据源代码目录结构,WebCore目录主要包括如下:
bindings:将Dom Binding 给JavascriptCore 方面的代码,同时包含依据idl接口描述文件,自动生成对应于JavascriptCore 的Binding 实现的脚本等内容;
bridge:主要包含NPPlugin 方面的接口访问等内容;
css:主要包括与css 方面相关的内容,如解析不同css 规则的定义与实现、css Binding