Chromium 系列之(5) blink相关知识

Chromium 系列之(5) blink相关知识

因为这段时间找工作,问的内核的相关问题比较多,所以记录下这些blink的相关的基础知识,一是帮助自己更好的理解blink,另一方面也当作笔记记录下来。

Blink的层级结构

Chromium 系列之(5) blink相关知识
一方面是HTML和CSS以及布局和JavaScript引擎部分,注意Blink中的JavaScript引擎为V8引擎。
另一方面是和系统相关的接口层,例如调用openGL等和音视频解码。Blink中的2D使用的是Skia,音频和视频是重点。
所以就会变成下面的样子。
Chromium 系列之(5) blink相关知识

Blink调用逻辑

Chromium
Controller
Modules
Core
Platform

platform/ - Blink中和平台相关的接口,主要有 geometry 和 graphics 等
core/ 和 modules/ - 主要core实现了主要有 Page, Node, Element, Document, Settings 以及接口层WebView(WebViewImpl), WebNode, WebElement, WebDocument,WebSettings, WebFrame等
bindings/core 和 bindings/modules/ - 概念上来说 bindings/core 属于 core/ 的一部分,bindings/modules/ 属于 modules/ 的一部分。放置于独立的目录是因为这部分代码跟 V8 紧密相关。
controller/ 一些使用 core/ 和 modules/ 的高级库。比如,devtools 的前端。

渲染流程

Chromium 系列之(5) blink相关知识

Blink Core基础概念

类的对应关系

Renderer process : Page = 1 : N 单进程的情况下, 多进程的情况下需要根据模式区分。
Page : Frame = 1 : M
Frame : DOMWindow : Document (or ExecutionContext) = 1 : 1 : 1

Frame和WebFrame

Frame和WebFrame是一一对应的关系,Frame可以通过client找到WebFrame, WebFrame也可以通过Client找到Frame。

Chromium 系列之(5) blink相关知识

其他的Web**封装的类可以参考这个

下一篇 Chromium 系列之(6)Blink视频相关的接口和文档