概念的应用层
每个框代表一个概念应用层。任何层都不应了解或依赖任何更高层。
- WebKit: Safari、Chromium 和所有其他基于 WebKit 的浏览器共享的渲染引擎。WebKit Port是 WebKit 的一部分,它集成了平台相关的系统服务,例如资源加载和图形处理。
- Glue:将 WebKit 类型转换为 Chromium 类型。这是我们的“WebKit 嵌入层”。它是 Chromium 和 test_shell(允许我们测试 WebKit)两款浏览器的基础。
- 渲染器/渲染器host:这是 Chromium 的“多进程嵌入层”。它代理跨进程边界的通知和命令。
- WebContents:一个可复用的组件,是内容模块的主类。它易于嵌入,允许多进程将 HTML 渲染到视图中。更多信息请参阅内容模块页面。
- Browser:代表浏览器窗口,它包含多个WebContent。
- Tab Helpers:可以附加到 WebContents 的独立对象(通过 WebContentsUserData mixin)。浏览器会将各种各样的 Tab Helpers 附加到其持有的 WebContents 上(例如,一个用于图标,一个用于信息栏,等等)。
WebKit
我们使用WebKit开源项目来布局网页。这些代码来自 Apple,存储在 /third_party/WebKit 目录中。WebKit 主要由代表核心布局功能的“WebCore”和运行 JavaScript 的“JavaScriptCore”组成。我们仅在测试时运行 JavaScriptCore,通常将其替换为我们的高性能 V8 JavaScript 引擎。我们实际上不使用 Apple 称之为“WebKit”的层,它是 WebCore 和 OS X 应用程序(例如 Safari)之间的嵌入 API。为了方便起见,我们通常将 Apple 的代码统称为“WebKit”。
WebKit 端口
在最底层,我们有 WebKit 的“移植”。这是我们对特定平台所需功能的实现,这些功能与平台无关的 WebCore 代码交互。这些文件位于 WebKit 树中,通常位于 Chromium 目录中或以 Chromium 为后缀的文件。我们的移植工作中的大部分内容实际上并非特定于操作系统:您可以将其视为 WebCore 的“Chromium 移植”。某些部分,例如字体渲染,必须针对每个平台进行不同的处理。
网络流量由我们的多进程资源加载系统处理 ,而不是直接从渲染进程交给操作系统。
图形库使用了为 Android 开发的 Skia 图形库