= Code Paths for Common Operations = == Constructing HTML tokenizer == {{{ HTMLDocument::createTokenizer() Document::implicitOpen() FrameLoader::begin(const KURL&, bool dispatch, SecurityOrigin*) FrameLoader::receivedFirstData() }}} == Tokenizing HTML document == From the moment, piece by piece of an HTML document is obtained from the network, this is what happens: {{{ HTMLTokenizer::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) }}} == Painting a push button == {{{ 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) }}} == Decoding image data == 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 data, bool allDataReceived) CachedImage::data(PassRefPtr 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) }}} == Get data from network == 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, bool shouldContinue) FrameLoader::callContinueLoadAfterNavigationPolicy(void* argument, const ResourceRequest& request, PassRefPtr 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) FrameLoader::checkNavigationPolicy(const ResourceRequest& request, DocumentLoader* loader, PassRefPtr formState, NavigationPolicyDecisionFunction function, void* argument) FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType type, PassRefPtr 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) }}}