Chromium文档学习(二)--网页显示
本文为作者学习Chromium开发文档所做的笔记,类似于主要文档翻译,穿插一些注释和个人理解。干货不多,请见谅。
本文介绍Chromium如何进行网页的显示。关于网页从网络获取内容的介绍在multi-process resource loading
本文参考文档 How Chromium Displays Web Pages
概念上的应用分层
图片是Chromiu官方提供的,比较小,之后笔者可能会进行重新绘制
每个方块都代表一个概念上的分层,每一层都对上面的层都没有依赖关系。
- WebKit: Safari, Chromium等浏览器共享的渲染引擎。
- Webkit Port是为了整合平台相关的系统服务,例如资源加载和图形(graphics)等等。
- Glue: 将Webkit类型转化成Chromium类型。这是“WebKit 嵌入层”。本层是Chromium和test_shell(用来测试Webkit的浏览器)两个浏览器的基础。
- Render/Render host:这是“多进程嵌入层”。处理穿过进程边界的通知和命令。
- WebContents:可重用构件,是Content模型的主要类。易于嵌入,并允许多进程的将HTML渲染成视图(view)。更多相关见content module pages
- Browser:代表浏览器窗口,包含多个WebContents。
- Tab Helper:连接到WebContents的独立对象(通过WebContentsUserData mixin类进行连接)。浏览器将他们按所保存的内容分类并连接到WebContents,例如某一个存放网页图标,另一个存放信息栏(类似toast的tips)。
WebKit
Chromium项目已经改为Blink引擎,但是文档介绍中一直是WebKit,Blink主页上也说明修改后Chromium的架构没有变化。
- 因为WebKit的嗲吗是由Apple提交的,所以在源码的/third_party/WebKit目录中。
- WebKit主要包括:WebCore用来代表核心的显示功能;JavaScriptCore用来运行Jscript程序。
- 在Chromium中,JavaScriptCore只用做测试用,实际使用的是更高性能的V8 JavaScript引擎。
测试用的意思是,如果网页显示出现问题,可以将V8引擎替换为JavaScriptCore,以确定问题是否是V8引擎引起的。
- Chromium的Webkit和Apple的WebKit其实并不相同,Apple的Webkit 是指在Webcore和OS X应用(如Safari)之间的API嵌入层,WebKit的叫法只是为了方便。
WebKit port
- WebKit port是Chromium的最底层,(需求改变,暂存)。

浙公网安备 33010602011771号