WebKit
文章平均质量分 74
RYZR
这个作者很懒,什么都没留下…
展开
-
WebKit介绍及总结(二)
<br /><br /><br />WebKit介绍及总结(二) <br />五 . 调用过程<br /><br />知道了 WebKit 的大体结构,我们就可以深究下去,看看这个浏览器引擎具体是怎么工作的。首先介绍几个基本且重要的类:<br />Page :打开 page.h 头文件,我们似乎看不到我们概念中的“页面”相关的东西,没错,这里的 Page 并非就是我们印象中的简单网页,在头文件中我们发现很多关于 history 的东西, goBack(),goForward(), 等等,关于主题的设定,关转载 2011-03-24 13:34:00 · 1497 阅读 · 0 评论 -
WebCore中的http响应信息维护
<br /><br />摘要:WebCore源代码分析,WebKit,dlmu2001,http模块,http响应,ResourceResponse,ResourceHandle,ResourceRequest,DocumentLoader,浏览器内核,curl<br />在“WebCore中的http请求信息维护”中,我们曾经简单介绍过http的原理,并分析了WebCore中对请求信息的维护,这篇文章则分析WebCore对http响应信息的维护。1. 作用<br />ResourceResponse负责维转载 2011-04-26 17:35:00 · 573 阅读 · 0 评论 -
WebCore中的http请求信息维护
<br /> WebCore中的http请求信息维护(dlmu2001)<br /> WebCore内核本身并不实现http协议,它通过调用不同平台的http库,比如Qt的QnetWorkRequest,gtk的soup,或者curl等,来实现http协议的功能。这里将以curl为例,来理解webcore中的请求信息维护。 http协议的细节,如果希望深入了解的话,可以参考rfc2616,rfc2617。简单介绍下它的原理,http协议遵循的是一个请求à响应的机制。也就是说,一个ur转载 2011-04-26 17:23:00 · 946 阅读 · 0 评论 -
Webcore中文本资源编解码
<br /><br />Webcore中文本资源编解码<br /> <br />dlmu2001<br /> <br />本文描述的文本资源编解码,针对的是字符串编解码,如UTF-8,GB2312,而非传输编解码(如gzip)。<br /> 关于字符串编码的理论知识,如果你还不了解,可以参考http://baike.baidu.com/view/1204863.htm。<br /> 我们以一个最简单的网页为例,假设服务器上有一个纯链接的页面,没有任何派生资源(image,css,sound,subf转载 2011-04-26 17:34:00 · 750 阅读 · 0 评论 -
WriteCallback函数后代码流程
起始页运行时,从curl的writecallback函数到htmltokenizer中的write为止。 BCResourceHandleManagerCurl.cpp:writeCallback()-->ResourceLoader.cpp:didReceiveData(ResourceHandle*, const char* data, int length, int length原创 2011-06-24 10:43:00 · 1407 阅读 · 0 评论 -
webkit内核源码分析一
摘要:本系列通过分析WebKit的源代码,试图分析WebKit的内核设计架构,模块之间的关系,分析的时候以Qt的移植为参考,涉及移植的东西不多,主要还是以内核为主。在分析内核的时候,Frame是首当其冲的一个类,本文将分析Frame类的代码。1. 描述Frame类是转载 2011-10-13 16:08:08 · 684 阅读 · 0 评论 -
webkit内核源码分析二
摘要:本系列通过分析WebKit的源代码,试图分析WebKit的内核设计架构,模块之间的关系,分析的时候以Qt的移植为参考,涉及移植的东西不多,主要还是以内核为主。FrameLoader类负责一个Frame的加载,在Frame的流程中起到非常重要的重要,同很多组件都有交互,本文将转载 2011-10-13 16:09:26 · 701 阅读 · 0 评论 -
webkit内核源码分析四
摘要:本文介绍 WebCore 中 Loader 模块是如何加载资源的,分主资源和派生资源分析 loader 模块的类关系。关键词: WebKit,Loader,Network,ResouceLoader,SubresourceLoader一、类结构及接口Loader转载 2011-10-13 16:11:23 · 929 阅读 · 0 评论 -
webkit内核源码分析五
图1 HTML解析模型图上图是HTML解析模型图,HTML解析分成Tokeniser和Tree Construction两个步骤,在”WebKit中的html词法分析”(http://blog.csdn.net/dlmu2001/archive/2010/11/09/转载 2011-10-13 16:12:33 · 823 阅读 · 0 评论 -
WebKit的智能指针分析 - Part 1:RefCounted
在WebKit的官网上有一篇使用指南:RefPtr and PassRefPtr Basics,从应用的角度讲解了RefPtr类族的由来,及使用方法。但很无厘头的是,这里面居然没有提到如何创建一个有引用计数功能的类!?(教你如何用砖头造房子却不教你如何造砖头)在抱怨作者的粗心、懒惰、和恶搞精神后,我只能用一句俗话来安慰自己:还好有源代码,还好有源代码,⋯⋯WebKit我来了!!!WebKi转载 2011-11-29 23:20:00 · 726 阅读 · 0 评论 -
Webkit文本资源编码选择
Webkit文本资源编码选择分类: WebKit2011-08-14 10:55 129人阅读 评论(0) 收藏 举报本文描述了Webkit文本资源解码时,编码格式的选择问题。这里的文本资源是指HTML/XML、CSS,以及JS文件等。如果没有明确说明,本文提到的“文本解码器”均特指TextResourceDecoder类。文本资源解码器由TextResourceDec转载 2012-01-18 22:55:04 · 822 阅读 · 0 评论 -
网页解码浅析
转载出处:http://blog.csdn.net/awebkit 网页是如何正确显示出来而不会乱码的呢?本文就这个问题讨论一下 当我们调用loadURL之后,经过一系列的check,终于,我们到了MainResourceLoader,开始load->loadNow,在这里,我们发送了网络请求。 下面这段大致讲了网络部分的结构,熟悉这部分的可以转载 2012-01-18 22:11:36 · 864 阅读 · 0 评论 -
WebKit中的html词法解析
<br />WebKit中的html词法解析<br />tomorrow.cyz@gmail.com<br />摘要:webkit源代码分析,webcore,html解析,htmlparse,htmltoken,htmltokenizer,dlmu2001,浏览器,chrome<br />语言的解析一般分为词法分析(lexical analysis)和语法分析(Syntax analysis)两个阶段,WebKit中的html解析也不例外,本文主要讨论词法分析。<br />词法分析的任务是对输入字节流进行逐转载 2011-04-26 16:58:00 · 1004 阅读 · 0 评论 -
Webkit FrameLoader分析
<br />Webkit FrameLoader分析<br /> FrameLoader是webkit中一个核心的组件,主要是职责是加载一个Frame中的各种资源,比如文档资源,css资源,js资源等等,当然FrameLoader通过组合的方式包含很多其他的组件,它们一起协作,共同完成加载Frame的重任,所以要理解webkit,理解Fameloader就非常的重要。<br /> 以下是FrameLoader的一个类图,主要展示了FrameLoader包含的一些其他组件。<br /> <b转载 2011-04-07 21:59:00 · 891 阅读 · 0 评论 -
WebKit介绍及总结(三)
<br /><br />WebKit介绍及总结(三)<br />六 . 编译与调试<br />在 ubuntu-10.04 上编译 Webkit ,所用的版本 r60742 ,基于 Qt :<br />安装 sudo apt-get install libxslt-dev gperf bison libsqlite3-dev flex libqt4-dev build-essential subversion libenchant-dev libXt-dev ;如果有其他库没有安装,根据提示,用 apt-g转载 2011-03-24 13:35:00 · 1099 阅读 · 0 评论 -
WebKit介绍及总结(一)
<br /><br />一 . WebKit 简介<br /> Webkit 是一个开放源代码的浏览器引擎 (web browser engine) ,最初的代码来自 KDE 的 KHTML 和 KJS( 均开放源代码 ) 。苹果公司在 Webkit 的基础上做了大量优化改进工作,此时的 Apple Webkit 已经和 Webkit 有了不少差别,最后开发出了著名的 Safari ,可以说 Safari 是一个相当成功的产品,但是 Safari 却不是开放源代码的。<br />基于 WebKit转载 2011-03-24 13:33:00 · 1413 阅读 · 0 评论 -
webkit中 Frame对象分析
<br /><br />webkit中 Frame对象分析<br />Frame应该是整个webcore里面最核心的对象之一,前面在讲Page对象的文章中,也提到过,从Page的角度来看,其实一个Page就是由一个或者多个Frame构成,而这些Frame是以树状的关系组织,我们来看一段HTML代码<br /> view plaincopy to clipboardprint?<html> <body> hello, everyone! <iframe src="..."/>转载 2011-04-07 22:01:00 · 1225 阅读 · 0 评论 -
webkit dom事件分析
<br />webkit dom事件分析<br /> Dom事件模型可以分为dom0 和dom2两种事件模型,所以支持JavaScript的浏览器都都会支持dom0事件模型,DOM2定义了高级的事件处理API,和DOM0的API相比,有着令人瞩目的不同(而且功能更强大).虽然DOM2标准并没有把已有的API收入其中,但是DOM0级API也没有被去除.对于基本的事件处理任务,你会觉得使用这些简单的API更自由一些.<br />DOM2事件模型被除了IE以外的所有浏览器支持。<br /> web转载 2011-04-07 21:58:00 · 1154 阅读 · 0 评论 -
webkit 控件的绘制
<br /><br />webkit 控件的绘制 webkit UI部分的绘制分为三块,首先是点线以及image的绘制 然后是空间的绘制,最后是窗口的绘制。1. 点线以及image的绘制<br /> webkit 点线以及image的绘制比较简单,webkitcore 抽象出一个GraphicsContext对象,该对象主要就是定义很多点线绘制的接口,然后平台给出具体的实现,image的绘制也类似,只是在GraphicsContext委托给一个Image对象,Image也有一些抽象的接口,不同平台给出不转载 2011-04-07 22:00:00 · 2715 阅读 · 1 评论 -
webkit Page对象的分析
<br /><br />webkit Page对象的分析<br /> <br /> Page对象是webkit的核心对象之一,顾名思义,Page数据结构就是描述览器上我们打开的一个页面,这样一个页面包括很多部分,比如菜单控制,拖拽控制,页面显示,以及一些参数设置等。所以webkit中的Page对象里面也对应很多这样相关的对象,下面是一张表示这些对象关系的类图。<br /><br /> <br />从上图中可以看出,Page里面主要是一些对象的组合,Page自身的代码并不是很多,里面的对象根据名字大概能够猜转载 2011-04-07 22:01:00 · 1557 阅读 · 0 评论 -
Timer实现
<br /><br /><br />1. webkit中timer实现的框架类图<br /><br /> 1.1 TimerHeap其实就是一个容器,管理一个一个的Timer<br /> 1.2 ThreadTimers 相当于整个timer模块的管理者,负责调度SharedTimer并且操作TimerHeap<br /> 1.3 SharedTimer是平台相关的一个类 源码如下:<br /> view plaincopy to clipboardprint?·········10········20··转载 2011-04-07 22:04:00 · 1411 阅读 · 0 评论 -
WebKit事件派发
<br /><br />一般在一个网络应用系统中,都会一下几类事件: 网络事件, timer事件,以及设备事件,设备事件主要指鼠标,按键,以及paint等消息事件<br />webkit也不例外,小弟分析了一下32平台的实现,也无特殊之处<br />1. 设备事件<br /> 设备事件仍然是通过win32平台的消息循环来派发,消息处理函数如下:<br /> + expand sourceview plaincopy to clipboardprint?<br /> <br />在32平台,webView仅仅转载 2011-04-07 22:06:00 · 1627 阅读 · 0 评论 -
Webkit JSBinding
<br /><br /> <br /> CREATE_DOM_NODE_WRAPPER(exec, globalObject, Text, text);<br /> view plaincopy to clipboardprint?#define CREATE_DOM_NODE_WRAPPER(exec, globalObject, className, object) createDOMNodeWrapper<JS##className>(exec, globalObject, static_cast<c转载 2011-04-07 21:57:00 · 781 阅读 · 0 评论 -
webkit中 html的解析及dom树和render树的生成
<br /><br />1.webkit中每个html页面对应于一颗dom树 和render树,dom用于描述html页面的的信息,而render树则用于布局,具体负责dom树如何显示在屏幕上,从MVC的角度来说,可以将render树看成是V,dom树看成是M,C则是具体的调度者,比HTMLDocumentParser等。webkit将这两部分分开,可以看出其设计意图,同一个dom,可以对应不同的render,或者不同的xml文档,对应于相同的render,显示出其极大的灵活性。<br />2. webki转载 2011-04-07 22:04:00 · 2905 阅读 · 3 评论 -
Webkit 资源管理
<br />Webkit 资源管理<br />webkit需要管理的资源主要有Font资源,CSS资源,Script资源,以及image资源。webkit也对应抽象出了一些对象,以下是一个资源管理相关的类图。<br /><br />CachedResource就表示一个缓存资源,里面持有一个真正数据的引用,当网络请求的数据到达后,会将数据设置到CacheResource里。这个过程的时序图如下:<br /><br />CachedResourceRequest 是作为SubResourceLoader的cl转载 2011-04-07 21:58:00 · 1239 阅读 · 1 评论 -
[WebKit]RefPtr和PassRefPtr基础[1]
历史: 在WebKit中,许多对象采用了引用计数。这种模式是通过类的ref,deref成员函数来递增和递减对象的引用记数。调用一次ref必须调用一次deref。当对象的引用记数为0的时候,对象就被删除。WebKit中许多类创建的新对象引用记数都为0,这被称作是浮动状态(Floating State)。在浮动状态的对象必须调用ref,在删除之前必须调用deref。WebCore中许多转载 2011-12-30 01:22:52 · 710 阅读 · 0 评论