Chromium网页Render Object Tree创建过程分析

Chromium网页Render Object Tree创建过程分析

ID:39550100

大小:221.00 KB

页数:21页

时间:2019-07-06

Chromium网页Render Object Tree创建过程分析_第1页
Chromium网页Render Object Tree创建过程分析_第2页
Chromium网页Render Object Tree创建过程分析_第3页
Chromium网页Render Object Tree创建过程分析_第4页
Chromium网页Render Object Tree创建过程分析_第5页
资源描述:

《Chromium网页Render Object Tree创建过程分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Chromium网页RenderObjectTree创建过程分析在前面一文中,我们分析了网页DOMTree的创建过程。网页DOMTree创建完成之后,WebKit会根据它的内容创建一个RenderObjectTree。RenderObjectTree是和网页渲染有关的一个Tree。这意味着只有在DOMTree中需要渲染的节点才会在RenderObjectTree中有对应节点。本文接下来就分析网页RenderObjectTree的创建过程。从前面一文可以知道,每一个HTML标签在DOMTree中都有一个对应的HTMLElement节点。相应地,在DOMTree中每一个需要渲染的HTMLElem

2、ent节点在RenderObjectTree中都有一个对应的RenderObject节点,如图1所示:从图1还可以看到,RenderObjectTree创建完成之后,WebKit还会继续根据它的内容创建一个RenderLayerTree和一个GraphicsLayerTree。本文主要关注RenderObjectTree的创建过程。从前面一文还可以知道,DOMTree是在网页内容的下载过程中创建的。一旦网页内容下载完成,DOMTree就创建完成了。网页的RenderObjectTree与DOMTree不一样,它是在网页内容下载完成之后才开始创建的。因此,接下来我们就从网页内容下载完成时开始分

3、析网页的RenderObjectTree的创建过程。从前面一文可以知道,WebKit是通过Browser进程下载网页内容的。Browser进程一方面通过Net模块中的URLRequest类去Web服务器请求网页内容,另一方面又通过Content模块中的ResourceLoader类的成员函数OnReadCompleted不断地获得URLRequest类请求回来的网页内容,如下所示:[cpp]viewplaincopy在CODE上查看代码片派生到我的代码片voidResourceLoader::OnReadCompleted(net::URLRequest*unused,intbytes_re

4、ad){......CompleteRead(bytes_read);......if(bytes_read>0){StartReading(true);//Readthenextchunk.}else{//URLRequestreportedanEOF.CallResponseCompleted.DCHECK_EQ(0,bytes_read);ResponseCompleted();}}这个函数定义在文件external/chromium_org/content/browser/loader/resource_loader.cc中。参数bytes_read表示当前这次从URLRequest

5、类中读取回来的网页内容的长度。当这个长度值等于0的时候,就表示所有的网页内容已经读取完毕。这时候ResourceLoader类的成员函数OnReadCompleted就会调用另外一个成员函数ResponseCompleted进行下一步处理。ResourceLoader类的成员函数ResponseCompleted的实现如下所示:[cpp]viewplaincopy在CODE上查看代码片派生到我的代码片voidResourceLoader::ResponseCompleted(){......handler_->OnResponseCompleted(request_->status(),se

6、curity_info,&defer);......}这个函数定义在文件external/chromium_org/content/browser/loader/resource_loader.cc中。在前面一文中,我们假设ResourceLoader类的成员变量handler_指向的是一个AsyncResourceHandler对象。ResourceLoader类的成员函数ResponseCompleted调用这个AsyncResourceHandler对象的成员函数OnResponseCompleted进行下一步处理。AsyncResourceHandler类的成员函数OnRespons

7、eCompleted的实现如下所示:[cpp]viewplaincopy在CODE上查看代码片派生到我的代码片voidAsyncResourceHandler::OnResponseCompleted(constnet::URLRequestStatus&status,conststd::string&security_info,bool*defer){constResourceRequestInfoImpl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。