diff options
Diffstat (limited to 'WebCore/loader/DocumentLoader.cpp')
-rw-r--r-- | WebCore/loader/DocumentLoader.cpp | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/WebCore/loader/DocumentLoader.cpp b/WebCore/loader/DocumentLoader.cpp index 1bb2f87..b0c0e0a 100644 --- a/WebCore/loader/DocumentLoader.cpp +++ b/WebCore/loader/DocumentLoader.cpp @@ -43,6 +43,7 @@ #include "Event.h" #include "Frame.h" #include "FrameLoader.h" +#include "FrameLoaderClient.h" #include "FrameTree.h" #include "HistoryItem.h" #include "Logging.h" @@ -53,6 +54,7 @@ #include "SharedBuffer.h" #include <wtf/Assertions.h> +#include <wtf/text/CString.h> #include <wtf/unicode/Unicode.h> namespace WebCore { @@ -281,8 +283,27 @@ void DocumentLoader::commitLoad(const char* data, int length) RefPtr<DocumentLoader> protect(this); commitIfReady(); - if (FrameLoader* frameLoader = DocumentLoader::frameLoader()) - frameLoader->committedLoad(this, data, length); + FrameLoader* frameLoader = DocumentLoader::frameLoader(); + if (!frameLoader) + return; + if (ArchiveFactory::isArchiveMimeType(response().mimeType())) + return; + frameLoader->client()->committedLoad(this, data, length); +} + +void DocumentLoader::commitData(const char* bytes, int length) +{ + // Set the text encoding. This is safe to call multiple times. + bool userChosen = true; + String encoding = overrideEncoding(); + if (encoding.isNull()) { + userChosen = false; + encoding = response().textEncodingName(); + } + // FIXME: DocumentWriter should be owned by DocumentLoader. + m_frame->loader()->writer()->setEncoding(encoding, userChosen); + ASSERT(m_frame->document()->parsing()); + m_frame->loader()->writer()->addData(bytes, length); } bool DocumentLoader::doesProgressiveLoad(const String& MIMEType) const @@ -547,7 +568,7 @@ void DocumentLoader::substituteResourceDeliveryTimerFired(Timer<DocumentLoader>* loader->didReceiveResponse(resource->response()); loader->didReceiveData(data->data(), data->size(), data->size(), true); - loader->didFinishLoading(); + loader->didFinishLoading(0); } else { // A null resource means that we should fail the load. // FIXME: Maybe we should use another error here - something like "not in cache". |