WebKit的Platform接口部分

转载请注明出处:http://www.cnblogs.com/fangkm/p/3787977.html

WebKit中解析、渲染网页的过程中需要一些功能,比如: socket连接、URL资源请求的实现、线程管理等,而这些功能依赖于具体的平台, 不同的平台有不同的移植实现。WebKit的Public中Platform接口抽象出平台相关的移植依赖。相关结构如下:

Platform维护一个全局的对象,通过initialize静态方法设置、current静态方法来访问该对象。
在Render进程创建新的RenderViewImpl对象之前就需要保证WebKit的相关环境已经初始化。初始化入口位于RenderThreadImpl的EnsureWebKitInitialized方法,这里创建了实现Platform接口的平台相关类RendererWebKitPlatformSupportImpl的对象,并将此对象设置成Platform的全局实例。

webkit_glue的WebKitPlatformSupportImpl类实现了Platform的部分接口,如创建WebURLLoader

接口的实现类WebURLLoaderImpl、WebSocketStreamHandle接口的实现类WebSocketStreamHandleImpl,并为这2个类的实现提供与具体平台相关的功能调用接口:ResourceLoaderBridge接口和WebSocketStreamHandleBridge接口。

WebKitPlatformSupportChildImpl派生自WebKitPlatformSupportImpl,主要提供了平台相关的线程实现类WebThreadImpl。

追朔到这里我就有点费解了,为啥单独分出来一个WebKitPlatformSupportChildImpl继承层而不合在WebKitPlatformSupportImpl里,功能上除了提供线程接口实现也没看出啥特别的功能,类名称里带个Child表示子进程中对WebKitPlatformSupportImpl实现?可代码中也没发现browser等其它地方有相关实现了,懒得去求甚解了。

再往下就是content层的WebKitPlatformSupportImpl实现了,考虑到插件进程、render进程以及worker进程都有着略微不同的Platform实现,所以这一层的WebKitPlatformSupportImpl仅仅是提取一下各种实现的共同代码部分,比如实现CreateResourceLoader、CreateWebSocketBridge接口,这两接口返回的平台相关的实现操作最终都委托到chromium的net库,URL请求对应的是URLRequest,Socket请求对应的是SocketStreamJob。

RendererWebKitPlatformSupportImpl为render进程对Platform的实现,增加了文件系统、3D渲染、多媒体实现等支持。

WebKit的Platform接口部分,布布扣,bubuko.com

时间: 2024-11-09 05:43:02

WebKit的Platform接口部分的相关文章

Chromium分发输入事件给WebKit处理的过程分析

Chromium的Render进程接收到Browser进程分发过来的输入事件之后,会在Compoistor线程中处理掉滑动和捏合手势这两种特殊的输入事件,其它类型的输入事件则交给Main线程处理.Main线程又会进一步将输入事件分发给WebKit处理.WebKit则根据输入事件发生的位置在网页中找到对应的HTML元素进行处理.本文接下来详细分析Chromium分发输入事件给WebKit处理的过程. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 以Touc

[somewhat outdated] How Chromium Displays Web Pages: Bottom-to-top overview of how WebKit is embedded in Chromium

For Developers? > ?Design Documents? > ? How Chromium Displays Web Pages This document describes how web pages are displayed in Chromium from the bottom up. Be sure you have read the multi-process architecture design document. You will especially wa

Chromium为视频标签<video>创建播放器的过程分析

Chromium是通过WebKit解析网页内容的.当WebKit遇到<video>标签时,就会创建一个播放器实例.WebKit是平台无关的,而播放器实现是平台相关的.因此,WebKit并没有自己实现播放器,而仅仅是创建一个播放器接口.通过这个播放器接口,可以使用平台提供的播放器来播放视频的内容.这就简化了Chromium对视频标签的支持.本文接下来就分析Chromium为视频标签创建播放器的过程. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 以And

Chromium硬件加速渲染的UI合成过程分析

在Chromium中,Render端和WebGL端绘制出来的UI最终是通过Browser端显示在屏幕上的.换句话说,就是Browser端负责合成Render端和WebGL端的UI.这涉及到不同OpenGL上下文之间的资源传递和同步问题.其中,资源传递问题通过Mailbox机制解决,同步问题通过Sync Point机制解决.本文接下来就分析Browser端合成Render端和WebGL端UI的过程. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! Rende

自己动手实现浏览器,21天自制chromium:起手篇

转:https://zhuanlan.zhihu.com/p/29101613?utm_medium=social&utm_source=qq 大家好,我又来了.这篇是21天自制原子弹的姐妹篇. 开个玩笑--从这篇开始, 我们来点干货,如何从blink打造一个可以实用的浏览器组件. chromium从零几年搞到现在,已经完全变成一个无所不包的庞然大物. 如果你只是想要一个能浏览网页的组件,方便嵌入到自己的程序里,或者想用网页来做界面--例如QQ音乐,网易云音乐那样, 那么chromium的那堆多

Chromium网页Layer Tree创建过程分析

在Chromium中,WebKit会创建一个Graphics Layer Tree描述网页.Graphics Layer Tree是和网页渲染相关的一个Tree.网页渲染最终由Chromium的CC模块完成,因此CC模块又会根据Graphics Layer Tree创建一个Layer Tree,以后就会根据这个Layer Tree对网页进行渲染.本文接下来就分析网页Layer Tree的创建过程. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 从前面Ch

Chromium网页Layer Tree绘制过程分析

网页绘图表面创建完成之后,调度器就会请求绘制CC Layer Tree,这样网页在加载完成之后就能快速显示出来.通过CC Layer Tree可以依次找到Graphics Layer Tree.Render Layer Tree和Render Object Tree.有了Render Object Tree之后,就可以执行具体的绘制工作了.接下来我们就分析网页CC Layer Tree的绘制过程. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! CC La

【翻译】Chromium如何展示网页

Chromium如何展示网页 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//Start_Here_Background_Reading/How_Chromium_Displays_Web_Pages.html 有github账号的话,不妨随手star一个 https://github.com/ahangchen/Chromium_doc_zh 这个文档从底层描述了Chromium是如何展示网页的.请确认你已经读

Chromium如何显示Web页面

Displaying A Web Page In Chrome 概念化的应用分层 参见原文档:http://goo.gl/MsEJX 每一个box代表一个抽象层.下层不依赖于上层. WebKit:渲染引擎.Safari,Chrome / Chromium均在使用.国内的则有百度浏览器,QQ浏览器,猎豹等.Port(即移植)是webkit的一部分,它负责整合与系统相关的服务,如资源下载,图像解码等. Glue:胶水层.负责把WebKit的数据类型转换为Chromium的数据类型(与android平