How Chromium Displays Web Pages

多进程架构, 多进程资源读取.

核心应用程序层

提取其中一些层, 或, 替换任何一个层。 也就是说, 层与层是相互独立的, 不需要知道彼此。

Webkit : Safari, Chormium都是用这个渲染引擎. Port是Webkit的一部分, 他是为不同平台而写的接口部分。例如:资源读取和图像。

Glue : 将WebKit类型转换为Chromium类型. 这是webkit嵌入层.    它基于两个层, Chromium和test_shell(他们允许我们测试WebKit)

Renderer/Render host : 这是Chromium的“多进程嵌入层”.  该层代理通知 并且 跨进程边界进行 命令控制。 你可以想想其他多进程浏览器可以使用该层, 并且它不依赖于其他浏览器的服务。

Tab contents : chrome独有的。 用来描述tab页内容。 他与其他应用程序服务捆绑,像历史系统和密码管理。 也可能没有, 但我们假设他是嵌入在chromium浏览器中的(其他Chromium组件像HTML dialogs也使用它)

Browser : 负责浏览器窗口, 他包含了多个TabContentses.

Webkit

WebCore描述核心的布局函数。

JavaScriptCore跑JavaScript.

我们运行JavaScriptCore只用来测试。 而实际应用中, 我们用V8 javascript引擎代替这个块。

实际上我们没有用苹果所谓的“WebKit”, 他是WebCore和OS X应用程序的接口, 例如Safari。 

The WebKit port

在最底层 有我们自己 对webkit的接口。

这是平台绑定的。

我们的许多接口实际上不是OS-specific的, 你可以认为他们是"Chromium port"接口.

一些部分, 好像字体渲染, 必须为不同平台写不同的接口。

  • 网络阻塞, 由我们的 多进程资源读取 机制处理, 而不是直接由OS渲染进程处理。
  • 图形库使用Skia, 这是为Android开发的。 他是跨平台的, 处理所有图像和基本图形,除了Text.

The WebKit glue

Chromium应用程序 使用不同的 类型, 编码风格, 和代码布局比起WebKit本身。

Threads in the renderer

每个渲染有两个线程 ()

posted on 2011-09-23 23:03  oleeceo  阅读(580)  评论(0)    收藏  举报

导航