Chromium网页Render Object Tree创建过程分析
在前面一文中,我们分析了网页DOM Tree的创建过程。网页DOM Tree创建完成之后,WebKit会根据它的内容创建一个Render Object Tree。Render Object Tree是和网页渲染有关的一个Tree。这意味着只有在DOM Tree中需要渲染的节点才会在Render Object Tree中有对应节点。本文接下来就分析网页Render Object Tree的创建过程。
从前面一文可以知道,每一个HTML标签在DOM Tree中都有一个对应的HTMLElement节点。相应地,在DOM Tree中每一个需要渲染的HTMLElement节点在Render Object Tree中都有一个对应的RenderObject节点,如图1所示:
从图1还可以看到,Render Object Tree创建完成之后,WebKit还会继续根据它的内容创建一个Render Layer Tree和一个Graphics Layer Tree。本文主要关注Render Object Tree的创建过程。
从前面一文还可以知道,DOM Tree是在网页内容的下载过程中创建的。一旦网页内容下载完成,DOM Tree就创建完成了。网页的Render Object Tree与DOM Tree不一样,它是在网页内容下载完成之后才开始创建的。因此,接下来我们就从网页内容下载完成时开始分析网页的Render Object Tree的创建过程。
从前面一文可以知道,WebKit是通过Browser进程下载网页内容的。Browser进程一方面通过Net模块中的URLRequest类去Web服务器请求网页内容,另一方面又通过Content模块中的ResourceLoader类的成员函数OnReadCompleted不断地获得URLRequest类请求回来的网页内容,如下所示:
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
void ResourceLoader::OnReadCompleted(net::URLRequest* unused, int bytes_read) {
......
CompleteRead(bytes_read);
......
if (bytes_read 0) {
StartReading(true); // Read the next chunk.
} else {
// URLRequest reported an EOF. Call ResponseCompleted.
DCHECK_EQ(0, bytes_read);
ResponseCompleted();
}
}
这个函数定义在文件external/chromium_org/content/browser/loader/resource_loader.cc中。
参数bytes_read表示当前这次从URLRequest类中读取回来的网页内容的长度。当这个长度值等于0的时候,就表示所有的网页内容已经读取完毕。这时候ResourceLoader类的成员函数OnReadCompleted就会调用另外一个成员函数ResponseCompleted进行下一步处理。
ResourceLoader类的成员函数ResponseCompleted的实现如下所示:
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
void ResourceLoader::ResponseCompleted() {
......
handler_-OnResponseCompleted(request_-status(), security_info, defer);
......
}
这个函数定义在文件external/chromium_org/content/browser/loader/resource_loader.cc中。
在前面一文中,我们假设ResourceLoader类的成员变量handler_指向的是一个AsyncResourceHandler对象。ResourceLoader类的成员函数ResponseCompleted调用这个AsyncResourceHandler对象的成员函
您可能关注的文档
- Chem3D常用功能使用教程方案.ppt
- chinajoy会展案例分析方案.ppt
- Chp9第九章成立新企业方案.ppt
- Chromium为视频标签全屏播放的过程分析方案.doc
- Chromium扩展(Extension)的ContentScript加载过程分析方案.doc
- Chromium网页FrameTree创建过程分析方案.doc
- Chromium的GPU进程启动过程分析方案.doc
- Chromium网页GraphicsLayerTree创建过程分析方案.doc
- Chromium网页LayerTree创建过程分析方案.doc
- Chromium网页RenderLayerTree创建过程分析方案.doc
最近下载
- SIMATIC S7-1200概述(工程师培训).pptx VIP
- 马工程教学课件《管理学》(第二版)第七章人员配备.pptx VIP
- 2025年《信息技术》教师资格证真题及答案.docx VIP
- 融资租赁与保险工具在大型设备项目中的风险对冲研究.pdf VIP
- 2025年互联网营销师考试通关ROI综合能力测试专题试卷及解析.pdf VIP
- S7-1200系统介绍课件.ppt VIP
- 智慧教育生态中的数字韧性培养策略研究.pdf VIP
- 2022年9月17日全国事业单位联考A类《职业能力倾向测验》答案+解析.pdf VIP
- 2025年拍卖师拍卖行业竞争格局与企业差异化效益战略专题试卷及解析.pdf VIP
- 2025年质量工程师产品召回危机公关专题试卷及解析-单项选择题.pdf VIP
原创力文档

文档评论(0)