webkit学习笔记1---webcore简单执行流程

来源:互联网 发布:真小人 伪君子知乎 编辑:程序博客网 时间:2024/05/18 16:13

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库

原创粉丝点击