webkit 常用操作代码调用流程
构造 HTML/XML tokenizer
[HTML]Document::createTokenizer() [HTML]Document::implicitOpen() FrameLoader::begin(const KURL&, bool dispatch, SecurityOrigin*) FrameLoader::receivedFirstData()
Tokenizing HTML/XML document
From the moment, piece by piece of an HTML document is obtained from the network, this is what happens:
[HTML,XML]Tokenizer::write(const SegmentedString& str, bool appendData) FrameLoader::write(const char* data, int len, bool flush) FrameLoader::addData(const char* bytes, int length) FrameLoaderClientQt::committedLoad(DocumentLoader* loader, const char* data, int length) FrameLoader::committedLoad(DocumentLoader* loader, const char* data, int length) DocumentLoader::commitLoad(const char* data, int length) DocumentLoader::receivedData(const char* data, int length) FrameLoader::receivedData(const char* data, int length) MainResourceLoader::addData(const char* data, int length, bool allAtOnce) ResourceLoader::didReceivedData(const char* data, int length, long long received, bool allAtOnce) ResourceLoader::didReceiveData(ResourceHandle*, const char* data, int len, long long received)
绘制一个push按钮
RenderTheme[Gtk,Wx,Qt]::paintButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) RenderTheme::paint(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) RenderBox::paintBoxDecorations(RenderObject::PaintInfo& paintInfo, int tx, int ty) RenderBlock::paintObject(RenderObject::PaintInfo& paintInfo, int tx, int ty) RenderBlock::paint(RenderObject::PaintInfo& paintInfo, int tx, int ty) InlineBox::paint(RenderObject::PaintInfo& paintInfo, int tx, int ty) InlineFlowBox::paint(RenderObject::PaintInfo& paintInfo, int tx, int ty) RootInlineBox::paint(RenderObject::PaintInfo& paintInfo, int tx, int ty) RenderLineBoxList::paint(RenderBoxModelObject* renderer, RenderObject::PaintInfo& paintInfo, int tx, int ty) RenderBlock::paintContents(RenderObject::PaintInfo& paintInfo, int tx, int ty) RenderBlock::paintObject(RenderObject::PaintInfo& paintInfo, int tx, int ty) RenderBlock::paint(RenderObject::PaintInfo& paintInfo, int tx, int ty) RenderBlock::paintChildren(RenderObject::PaintInfo& paintInfo, int tx, int ty) RenderBlock::paintContents(RenderObject::PaintInfo& paintInfo, int tx, int ty) RenderBlock::paintObject(RenderObject::PaintInfo& paintInfo, int tx, int ty) RenderBlock::paint(RenderObject::PaintInfo& paintInfo, int tx, int ty) RenderBlock::paintChildren(RenderObject::PaintInfo& paintInfo, int tx, int ty) RenderBlock::paintContents(RenderObject::PaintInfo& paintInfo, int tx, int ty) RenderBlock::paintObject(RenderObject::PaintInfo& paintInfo, int tx, int ty) RenderBlock::paint(RenderObject::PaintInfo& paintInfo, int tx, int ty) RenderLayer::paintLayer(RenderLayer*, GraphicsContext*, const IntRect& paintDirtyRect, PaintRestriction paintRestriction, RenderObject* paintingRoot, RenderObject::OverlapTestRequestMap* overlapTestRequests, PaintLayerFlags paintFlags) RenderLayer::paint(GraphicsContext* p, const IntRect& damageRect, PaintRestriction paintRestriction, RenderObject *paintingRoot) FrameView::paintContents(GraphicsContext* p, const IntRect& rect) ScrollView::paint(GraphicsContext* p, const IntRect& rect)
解码图片
Shown here for the Qt port, might vary a bit for other ports.
ImageDecoderQt::setData(const IncomingData &data, bool allDataReceived) ImageSource::setData(SharedBuffer* data, bool allDataReceived) BitmapImage::dataChanged(bool allDataReceived) Image::setData(PassRefPtr<SharedBuffer> data, bool allDataReceived) CachedImage::data(PassRefPtr<SharedBuffer> data, bool allDataReceived) Loader::Host::didReceiveData(SubresourceLoader* loader, const char* data, int size) SubresourceLoader::didReceiveData(const char* data, int length, long long lengthReceived, bool allAtOnce) ResourceLoader::didReceiveData(ResourceHandle*, const char* data, int length, int lengthReceived)
G获取网络数据
Shown here for the Qt port, might vary a bit for other ports.
QNetworkReplyHandler::start() QNetworkReplyHandler(ResourceHandle* handle, LoadMode loadMode) ResourceHandle::start(Frame* frame) ResourceHandle::create(const ResourceRequest& request, ResourceHandleClient* client, Frame* frame, bool defersLoading, bool shouldContentSniff, bool mightDownloadFromHandle) MainResourceLoader::loadNow(ResourceRequest& r) MainResourceLoader::load(const ResourceRequest& r, const SubstituteData& substituteData) DocumentLoader::startLoadingMainResource(unsigned long identifier) FrameLoader::continueLoadAfterWillSubmitForm(PolicyAction) FrameLoader::continueLoadAfterNavigationPolicy(const ResourceRequest&, PassRefPtr<FormState> formState, bool shouldContinue) FrameLoader::callContinueLoadAfterNavigationPolicy(void* argument, const ResourceRequest& request, PassRefPtr<FormState> formState, bool shouldContinue) PolicyCheck::call(bool shouldContinue) FrameLoader::continueAfterNavigationPolicy(PolicyAction policy) FrameLoaderClientQt::callPolicyFunction(FramePolicyFunction function, PolicyAction action) FrameLoaderClientQt::dispatchDecidePolicyForNavigationAction(FramePolicyFunction function, const WebCore::NavigationAction& action, const WebCore::ResourceRequest& request, PassRefPtr<WebCore::FormState>) FrameLoader::checkNavigationPolicy(const ResourceRequest& request, DocumentLoader* loader, PassRefPtr<FormState> formState, NavigationPolicyDecisionFunction function, void* argument) FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType type, PassRefPtr<FormState> prpFormState) FrameLoader::load(DocumentLoader* newDocumentLoader) FrameLoader::load(const ResourceRequest& request, const String& frameName, bool lockHistory) FrameLoader::load(const ResourceRequest& request, bool lockHistory) QWebFrame::load(const QNetworkRequest &req, QNetworkAccessManager::Operation operation, const QByteArray &body) QWebFrame::load(const QUrl &url)
相关推荐
echoes 2020-08-20
RainyX 2020-07-26
sunshineboyleng 2020-07-08
程序员俱乐部 2020-06-28
zhanghao 2020-06-16
e度空间 2020-06-11
sunshineboyleng 2020-06-04
bertzhang 2020-06-02
xtuhcy 2020-05-20
tichangde 2020-05-19
sunshineboyleng 2020-04-27
coulder 2020-03-07