// This is only called by FrameLoader::replaceDocumentWhileExecutingJavaScriptURL() void DocumentLoader::replaceDocumentWhileExecutingJavaScriptURL(const DocumentInit& init, const String& source, Document* ownerDocument) { m_writer = createWriterFor(ownerDocument, init, mimeType(), m_writer ? m_writer->encoding() : emptyAtom, true, ForceSynchronousParsing); if (!source.isNull()) m_writer->appendReplacingData(source); endWriting(m_writer.get()); }
void DocumentLoader::finishedLoading(double finishTime) { DCHECK(m_frame->loader().stateMachine()->creatingInitialEmptyDocument() || !m_frame->page()->defersLoading() || InspectorInstrumentation::isDebuggerPaused(m_frame)); double responseEndTime = finishTime; if (!responseEndTime) responseEndTime = m_timeOfLastDataReceived; if (!responseEndTime) responseEndTime = monotonicallyIncreasingTime(); timing().setResponseEnd(responseEndTime); commitIfReady(); if (!frameLoader()) return; if (!maybeCreateArchive()) { // If this is an empty document, it will not have actually been created yet. // Commit dummy data so that DocumentWriter::begin() gets called and creates // the Document. if (!m_writer) commitData(0, 0); } if (!m_frame) return; m_applicationCacheHost->finishedLoadingMainResource(); endWriting(); if (m_state < MainResourceDone) m_state = MainResourceDone; clearMainResourceHandle(); }
// This is only called by ScriptController::executeScriptIfJavaScriptURL // and always contains the result of evaluating a javascript: url. // This is the <iframe src="javascript:'html'"> case. void DocumentLoader::replaceDocument(const String& source, Document* ownerDocument) { m_frame->loader().stopAllLoaders(); m_writer = createWriterFor(m_frame, ownerDocument, m_frame->document()->url(), mimeType(), m_writer ? m_writer->encoding() : emptyAtom, m_writer ? m_writer->encodingWasChosenByUser() : false, true); if (!source.isNull()) m_writer->appendReplacingData(source); endWriting(m_writer.get()); }
void DocumentLoader::finishedLoading(double finishTime) { ASSERT(!mainResourceLoader() || !mainResourceLoader()->defersLoading() || InspectorInstrumentation::isDebuggerPaused(m_frame)); RefPtr<DocumentLoader> protect(this); double responseEndTime = finishTime; if (!responseEndTime) responseEndTime = m_timeOfLastDataReceived; if (!responseEndTime) responseEndTime = monotonicallyIncreasingTime(); timing()->setResponseEnd(responseEndTime); commitIfReady(); if (!frameLoader()) return; if (!maybeCreateArchive()) { // If this is an empty document, it will not have actually been created yet. Commit dummy data so that // DocumentWriter::begin() gets called and creates the Document. if (!m_writer) commitData(0, 0); } endWriting(m_writer.get()); if (!m_mainDocumentError.isNull()) return; clearMainResourceLoader(); if (!frameLoader()->stateMachine()->creatingInitialEmptyDocument()) frameLoader()->checkLoadComplete(); // If the document specified an application cache manifest, it violates the author's intent if we store it in the memory cache // and deny the appcache the chance to intercept it in the future, so remove from the memory cache. if (m_frame) { if (m_mainResource && m_frame->document()->hasAppCacheManifest()) memoryCache()->remove(m_mainResource.get()); } m_applicationCacheHost->finishedLoadingMainResource(); clearMainResourceHandle(); }