每篇文章都是成长的证明!
这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情
Content模块是Chromium项目最主要的部分,Content对底下的模块进行了封装,向上提供了一套支持多进程架构的Content API接口,用于网页的渲染。当然,多进程架构是在Windows或Linux平台上的Chromium浏览器才有用,在Android平台上,Webview只支持单进程方式(Android O已经支持多进程了)。
AwContents是基于ContentAPI开发的模块,是Chromium为了对接到AndroidWebview而封装的一个新类,但是AwContents模块提供的还不是WebView接口,所以还需要一层桥接部分,将AwContents桥接到Android WebView。
Android WebView则是Android framework层提供给apk调用的一套标准接口,可以用来构建一个运行于Android平台的浏览器。
Renderer进程和Browser进程通过IPC来交换信息,具体的设施就是RendererHost和Renderer等相关类,其作用是把网页的内容(content)渲染成Tab的显示内容。一个Tab可能会包含多个页面的内容,因而它会管理Tab中的多个页面内容。Tab contents之上就是浏览器,Tab contents会把内容绘制在browser窗口的一个标签中。
Chromium把RendererHost及其以下部分称为Content,同时包括还有很多对HTML5功能实现的支持,contentAPI基于此两部分,包装成为一套公开的接口。Tab contents及以上部分称为Chrome(chrome的原意即是包装在网页内容之上的框)。浏览器中相关的功能仅仅在content API之上才有,而不存在于content API中。
CEF全称chromium embeddedframework,其目的是提供一套嵌入式的接口,最初的版本是基于早期的RendererHost和chrome浏览器的很多内部接口开发而来的,在新的CEF3中,其主要依赖于公开的Content API来实现的。