- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WebKit内核源码
WebKit内核源码分析(一)dlmu2001作者:红心地瓜(tomorrow.cyz@)摘要:本系列通过分析WebKit的源代码,试图分析WebKit的内核设计架构,模块之间的关系,分析的时候以Qt的移植为参考,涉及移植的东西不多,主要还是以内核为主。在分析内核的时候,Frame是首当其冲的一个类,本文将分析Frame类的代码。1.????描述Frame类是WebCore内核同应用之间联系的一个重要的类。它有点像设计模式中的Fa?ade,将内核的各个不同的零配件组装在了一起,但又不是Fa?ade,因为用户很多时候还是要直接去操作里面的组件。除了设计上的考虑,Frame还有语法上的意义,它对应于Page里面的帧。2.????类结构1)??????????????FrameTree对象用来协助管理父帧和子帧的关系,常见的比如main frame之中有iframe元素,就会调用FrameLoaderClientQt::createFrame来产生子帧,产生的子帧会通过appendChild添加到主帧的树状结构中。Frame通过FrameTree对象,可以方便地访问它的父帧,子帧,兄弟帧。2)??????????????维护FrameLoader对象用来完成frame的加载,FrameLoader是一个非常重要的类,后续进行进一步的分析。3)??????????????维护NavigationScheduler对象用来管理页面跳转调度(比如重定向,meta refresh等)。4)??????????????DOMWindow用来管理同DOM相关的事件、属性和消息。5)??????????????FrameViwe类用于Frame的排版。6)??????????????Frame文档解析后,对每一个tag或者attr,会有对应的dom节点关联,Document类用来管理这些dom节点。不同的文档类型继承出不同的子类,比如HTML文档对应子类HTMLDocument,XML文档对应于XMLDocument。7)??????????????SciptController对象,脚本控制器,用来管理脚本的执行和操作。8)??????????????Editor对象用来处理页面的编辑相关的操作,比如拷贝,粘贴,输入等,Editor对象,它同Page类的EditorClient对象紧密合作。和EditorClient的关系就如同Page同Frame的关系。9)??????????????SelectionController用来管理Frame中的选取操作。10)?????????AnimationControlle,动画控制,控制动画的播放,暂停,继续(同HTML video标签是否有关系?)11)?????????EventHandler,事件处理对象,这里的对象主要是同上层应用也就是用户参与的事件,比如鼠标事件,按键事件(快捷键等),滚动事件,resize事件等。这是一个浏览器外壳经常需要打交道的类。3.????主要接口3.1???Createstatic PassRefPtrFrame create(Page*,HTMLFrameOwnerElement*,FrameLoaderClient*)描述:调用Frame构造函数,创建出Frame对象。有两个地方会创建Frame对象,一是要加载一个新的页面请求,这个时候会创建main frame,一是在加载子帧的时候,通过FrameLoaderClientQt的createFrame接口,创建子帧对应的Frame对象,在第一种情况中,HTMLFrameOwnerElement参数为NULL,第二种情况传子帧的父元素。在一个tab页内,main frame会重用。调用系列:?QwebPage::setView?QwebPage::setViewportSize?QwebPage::mainFrame?QwebPagePrivate::createMainFrame?QwebFrameData::QwebFrameData?Frame::create?FrameLoader::finishedLoading?……?HTMLDocumentParser::append?……?HTMLTreeBuilder::processToken?……?HTMLElementBase::openURL?SubFrameLoader::requestFrame?……?FrameLoaderClientQt::creatFrame?QwebFrameData::QwebFrameData?Frame::create3.2??createViewvoid createView(const IntSize, const C
您可能关注的文档
最近下载
- 新人教版高中数学必修第一册全册单元测试卷(原卷+解析).pdf VIP
- 爱德华消防主机操作手册.doc VIP
- 包皮过长健康宣教PPT.pptx
- 高血压病的防治知识讲座含内容.pptx VIP
- 风能发电系统 漂浮式海上风力发电机组一体化计算分析导则及编制说明.pdf VIP
- 2024年北京市普通高中学业水平等级性考试地理试卷(含答案).pdf VIP
- 生猪屠宰兽医卫生检验人员考试题库5份(含答案).docx
- 2017款长城哈弗M6-2017款1.5T手动自动两驱蓝标_汽车使用手册用户操作图解驾驶车主车辆说明书电子版.pdf VIP
- 二月闹肠胀气(宝宝哭闹护理手册).pdf
- 马来酸阿伐曲泊帕片-药品临床应用解读.pptx VIP
文档评论(0)