webkit的网络处理的主要类是ResourceHandle,这个类保存着request和response以及具体实现的数据,而WebCore则通过ResourceHandleClient(ResourceLoader)和ResourceHandle协作。典型的数据请求和处理如下
一些主要的类如下:
--ResourceRequestBase
--子类ResourceRequest有各种实现,有soup, curl, qt, chromium, win等
--KURL url地址
--HTTPHeaderMap
--FormData m_httpBody; //FormData是一个vector
--一些属性,如priority,cache policy, httpmethod等
--使用CrossThreadResourceRequestData
--ResourceResponseBase
--类似request,有各种实现
--KURL
--HTTPHeaderMap
--一些属性
--使用CrossThreadResourceReponseData
--ResourceHandle
--包含ResourceRequest (通过internal)
--包含ResourceHandleClient (通过internal)
--包含WebURLLoader (通过internal)
--包含ResourceResponse(通过internal, soup, curl实现中)
--通过create()来初始化
在ResourceLoader::start(), MainResourceLoader::loadNow()以及PingLoader中调用
而ResourceLoader::start()只在ResourceLoader::setDefersLoading()和ResourceLoadScheduler中调用
--start()发出http或其他的网络请求
在create()中调用
--ResourceHandleClient
--接口类
--实现类有PingLoader, ResourceLoader, ApplicationCacheGroup
--ResourceLoader的子类为MainResourceLoader和SubResourceLoader