序
前 言
第1章 搭建源代码编译环境 1
1.1 Android全源码开发环境 1
1.1.1 PC配置建议 1
1.1.2 Ubuntu系统安装 2
1.1.3 Ubuntu下Android编译环境搭建 2
1.1.4 工作目录设置 3
1.1.5 源代码下载 3
1.1.6 整体编译Android源代码 4
1.1.7 单个模块按需编译 5
1.1.8 编译生成本地Android SDK 5
1.2 Android常用工具使用及相关技巧说明 6
1.2.1 启动Android模拟器 10
1.2.2 Android调试工具adb的使用方法 10
1.3 WebKit源代码目录结构 13
1.4 WebKit代码调试 15
1.5 本章小结 17
第2章 浏览器工作原理及WebKit概览 18
2.1 浏览器工作原理概述 18
2.1.1 页面 19
2.1.2 内核 19
2.1.3 外壳 24
2.2 浏览器和WebKit简史 27
2.3 WebKit架构概览 29
2.3.1 整体组成架构 30
2.3.2 核心工作流程 34
2.3.3 代码设计风格 36
2.4 本章小结 38
第3章 WTF的实现及使用 39
3.1 WTF库概述 39
3.2 智能指针 40
3.2.1 OwnPtr的实现及使用 41
3.2.2 RefPtr的实现及使用 44
3.2.3 线程安全性 45
3.3 Assert与crash dump 46
3.3.1 Assert的实现及使用 46
3.3.2 crash dump的实现及使用 47
3.4 内存管理与容器 50
3.4.1 FastAllocator的实现及使用 50
3.4.2 容器类概述 51
3.5 原子操作 57
3.6 WebKit运行时线程结构 57
3.6.1 MessageQueue实现分析 57
3.6.2 Task传递 59
3.6.3 MainThread运行原理 60
3.7 本章小结 61
第4章 Loader与网络库 62
4.1 Loader概述 63
4.2 Loader的设计与实现架构 63
4.2.1 Loader模块的设计 63
4.2.2 Loader中的类结构及作用 65
4.3 MainResourceLoader资源加载流程 67
4.3.1 主资源 67
4.3.2 主资源加载示例 67
4.4 SubResourceLoader资源加载流程 73
4.4.1 派生资源 73
4.4.2 派生资源加载示例 73
4.5 WebKit网络库chrome-net介绍 80
4.5.1 chrome-net实现结构 80
4.5.2 chrome-net与WebKit的接口 81
4.6 WebKit中的 Cache 81
4.6.1 Memory Cache内存缓存 82
4.6.2 Page Cache页面缓存 84
4.6.3 Disk Cache磁盘缓存 86
4.7 本章小结 87
第5章 网页解析 88
5.1 WebKit网页解析概述 88
5.2 DOM模型简介 89
5.3 HTML解析过程 90
5.3.1 DOM树的构建 90
5.3.2 Render树的构建 94
5.3.3 RenderLayer树的构建 96
5.4 CSS样式表处理 97
5.4.1 CSS文档结构 97
5.4.2 CSS解析过程 99
5.4.3 CSS规则匹配 100
5.5 JavaScript脚本执行 101
5.6 本章小结 103
第6章 排版布局 104
6.1 CSS盒模型 104
6.2 定位与包含块 106
6.3 Render类的核心对象 111
6.4 Render树创建流程代码分析 121
6.5 Layout流程代码分析 123
6.5.1 计算大小 123
6.5.2 确定位置 127
6.5.3 简单例子 130
6.6 绘制流程分析 131
6.7 本章小结 136
第7章 渲染与硬件加速 137
7.1 Android SurfaceFlinger系统介绍 137
7.2 WebKit 的三棵树 138
7.3 Android WebKit渲染过程 139
7.3.1 Android WebKit记录网页绘制命令过程分析 140
7.3.2 Android WebKit软件渲染流程分析 145
7.3.3 Android WebKit硬件渲染流程分析 147
7.4 软件渲染与硬件渲染的优缺点 156
7.5 本章小结 156
第8章 Android WebKit框架 157
8.1 Android系统中的WebKit框架介绍 157
8.1.1 Android Framework介绍 158
8.1.2 Java Native Interface简介 160
8.1.3 Android WebKit相关API简介 161
8.2 Android WebKit框架实现解析 163
8.2.1 架构简述 164
8.2.2 初始化流程 165
8.2.3 网页加载流程 167
8.2.4 绘制调用流程 168
8.3 基于Android WebKit的浏览器实现 169
8.3.1 浏览器App的基本功能 169
8.3.2 Android系统浏览器实现解析 170
8.3.3 Android系统WebKit内核定制开发 174
8.4 本章小结 175
第9章 JavaScript扩展接口 176
9.1 V8原理及接口 176
9.1.1 V8设计元素 176
9.1.2 V8运行实例分析 181
9.1.3 V8 接口及使用 183
9.2 WebKit JavaScript接口 191
9.2.1 V8 binding作用及结构 191
9.2.2 WebKit接口扩展 191
9.3 HTML 5扩展实例 196
9.3.1 WebSocket概述 196
9.3.2 WebSocket实现分析 198
9.4 本章小结 200
第10章 WebKit的插件系统 201
10.1 NPAPI插件概述 202
10.1.1 浏览器插件功能作用 202
10.1.2 NPAPI插件规范 202
10.2 WebKit的插件系统 204
10.2.1 WebKit插件基础组件 205
10.2.2 插件加载流程 205
10.2.3 插件与脚本的交互 210
10.3 Android平台插件开发 213
10.3.1 新增特有接口 213
10.3.2 插件APK化及参考范例 214
10.4 本章小结 217
第11章 浏览器调试工具 218
11.1 Inspector概述 218
11.2 WebKit Inspector协议 219
11.3 Remote Inspector实现结构 223
11.3.1 协议信道 224
11.3.2 Inspector后端 225
11.3.3 Inspector前端 229
11.4 JavaScript调试 233
11.5 本章小结 235