WebKit的Platform接口部分

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

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

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

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

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

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

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

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

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

相关文章
相关标签/搜索