webkit dom 是如何创建renderobject的

程序调用堆栈如下:

     WebUi.exe(17FK-87)!khtml::RenderObject::RenderObject(DOM::NodeImpl * node=0x3815eda8, khtml::RenderObject * const this=0x3815e2ac)  Line 158    C++
     WebUi.exe(17FK-87)!khtml::RenderText::RenderText(DOM::DOMStringImpl * _str=0x3815ed80, DOM::NodeImpl * node=0x3815eda8, khtml::RenderText * const this=0x3815e2ac)  Line 764 + 0x3f    C++
     WebUi.exe(17FK-87)!DOM::TextImpl::createRenderer(RenderArena * arena=0x38153f40, DOM::TextImpl * const this=0x3815eda8)  Line 456 + 0x21    C++
     WebUi.exe(17FK-87)!DOM::NodeImpl::createRendererIfNeeded(DOM::NodeImpl * parent=0x3815ec10)  Line 1399 + 0x22    C++
     WebUi.exe(17FK-87)!DOM::TextImpl::attach()  Line 462    C++
     WebUi.exe(17FK-87)!KHTMLParser::insertNode(bool flat=false, DOM::NodeImpl * n=0x3815eda8, KHTMLParser * const this=0x38155e20)  Line 342    C++
>    WebUi.exe(17FK-87)!KHTMLParser::parseToken(khtml::Token * t=0x38155788, KHTMLParser * const this=0x38155e20)  Line 273 + 0x1a    C++
     WebUi.exe(17FK-87)!khtml::HTMLTokenizer::processToken(KJSProxy * jsProxy=0x38156160)  Line 2121    C++
     WebUi.exe(17FK-87)!khtml::HTMLTokenizer::write(bool appendData=true, khtml::TokenizerString & str={...}, khtml::HTMLTokenizer * const this=0x38155708)  Line 1776 + 0xf    C++
     WebUi.exe(17FK-87)!KHTMLPart::write(int len=1759, char * str=0x3218dbf4, KHTMLPart * const this=0x34150620)  Line 1766 + 0x35    C++
     WebUi.exe(17FK-87)!KWQKHTMLPart::addData(int length=1759, char * bytes=0x3218dbf4, KWQKHTMLPart * const this=0x34150620)  Line 828    C++
     WebUi.exe(17FK-87)!CWebCoreBridge::AddData(DOM::DocumentImpl * doc=0x38151ad0, TDesC8 & aData={...})  Line 313    C++
     WebUi.exe(17FK-87)!CPageLoadListener::ResponseL(CUrlResponseInfo & aResponse={...}, int aTransactionId=1, CPageLoadListener * const this=0x32161c60)  Line 294 + 0x2c    C++
     WebUi.exe(17FK-87)!CContentDispatcher::ResponseL(int transactionId=1, int status=0, CUrlResponseInfo & aResponse={...})  Line 336    C++
     WebUi.exe(17FK-87)!CUrlLoader::ResponseL(CUrlResponseInfo & aResponse={...}, CBaseTransaction & aTransaction={...}, CUrlLoader * const this=0x3214eb4c)  Line 254    C++
     WebUi.exe(17FK-87)!CBaseTransaction::RunL(int aError=0, CBaseTransaction * const this=0x32162df4)  Line 363    C++
     WebUi.exe(17FK-87)!CBaseTransaction::SendPartialResponse()  Line 402    C++
     WebUi.exe(17FK-87)!CBaseTransaction::AddBodyDataL(TPtrC8 & aChunkPtr={...}, CBaseTransaction * const this=0x32162df4)  Line 506    C++
     WebUi.exe(17FK-87)!CFileTransaction::MHFRunL(TFileEvent & aEvent=EGotResponseBodyData, CFileTransaction * const this=0x32162df4)  Line 332    C++
     WebUi.exe(17FK-87)!CFileReader::RunL(int bytesRead=1759)  Line 197 + 0x1a    C++

 

程序所使用的编辑器是VS.net 2003  sdk使用的是fp1.

 

从调用堆栈上可以分析得出,htmlparser 调用TextImpl::attach()函数创建RenderText节点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值