获取一个网页数据之后会调用 HTMLTokenizer::write这个函数, 传入的str即为 html 文档数据。
HTMLTokenizer::write主要是解析html 文档,并构建对应的dom tree[node tree], 这个由htmlparser的insertNode函数中的addChild()语句来实现, 但之后会调用node->attach()这个函数,它是在构建dom tree之后, 立马构建render tree和layer tree; 其中在函数createRendererIfNeeded中, 实现render object的AddChild()这么一个过程。 但在AddChild()的时候, 会调用到RenderObjectChildList->insertChildNode(),而在这个函数中, 会有addLayers()的过程, 这样在一次的创建dom tree的过程中, 就完成了所有的render tree, layer tree的创建过程。
[webkit] htmlparser 部分
作者:
hustyiyuan
2009-09-11 00:54 星期五 晴