ラベル webcore の投稿を表示しています。 すべての投稿を表示
ラベル webcore の投稿を表示しています。 すべての投稿を表示

2013年3月25日月曜日

浏览器探究

http://blog.csdn.net/hxwwf/article/category/1082535/1

webkit部分——解析HTML
  (1)HTML起源
  (2)解码和HTMLTokenizer的处理
  (3)HTMLToken的处理

WebKit内核源代码分析

http://blog.csdn.net/dlmu2001/article/category/741748

webcore简单执行流程


webcore执行的大致流程如下:
1 通过URL构造请求
1 WebMutableURLRequest::initWithURL( 
 BSTR url,
      WebURLRequestCachePolicy cachePolicy,
double timeoutInterval);
url:URL地址
cachePolicy:这实际是个枚举类型
typedef enum _WebURLRequestCachePolicy
{
    WebURLRequestUseProtocolCachePolicy,
    WebURLRequestReloadIgnoringCacheData,
    WebURLRequestReturnCacheDataElseLoad,
    WebURLRequestReturnCacheDataDontLoad
} WebURLRequestCachePolicy;
timeoutInterval:用来设置超时的时间
2 WebMutableURLRequest::setHTTPMethod( 
BSTR method)
method:GET or POST
2 载入请求
WebFrame::loadRequest( 
 IWebURLRequest* request);
Request:请求对象指针
具体的函数调用栈如下:

3 资源的下载
Loader模块会首先判断资源是否在cache中,如果没有,会调用相关平台的下载库,这里是CFNetwork,调用的是CFNetwork.dll
4 数据的接收
具体过程如下
static void didReceiveData(CFURLConnectionRef conn, CFDataRef data, CFIndex originalLength, const void* clientInfo);
void FrameLoader::receivedFirstData()
HRESULT WinLauncherWebHost::updateAddressBar(IWebView* webView)
函数调用栈如下:


5 数据的处理---创建dom树和render树
入口点:
void HTMLDocumentParser::pumpTokenizer(SynchronousMode mode)
在生成DOM树每个节点的同时,同步生成Layout树的每个节点,其中保存了布局信息,和CSS样式信息。
6数据的显示
调用平台相关的图形库,我这里是CoreGraphics库


浅谈WebKit之WebCore篇

http://ourpgh.blogspot.jp/2008/09/webkitwebcore.html