Index: Source/WebCore/loader/DocumentLoader.cpp |
diff --git a/Source/WebCore/loader/DocumentLoader.cpp b/Source/WebCore/loader/DocumentLoader.cpp |
index 44e265c0529d9a3ea241c9bccb2e0ae22f91f5d7..b11064d9272bd67fbd042c4d9207eebdc327390b 100644 |
--- a/Source/WebCore/loader/DocumentLoader.cpp |
+++ b/Source/WebCore/loader/DocumentLoader.cpp |
@@ -35,6 +35,7 @@ |
#include "CachedPage.h" |
#include "CachedResourceLoader.h" |
#include "DOMWindow.h" |
+#include "DataUriResource.h" |
#include "Document.h" |
#include "DocumentParser.h" |
#include "DocumentWriter.h" |
@@ -60,6 +61,7 @@ |
#include "SubresourceLoader.h" |
#include "TextResourceDecoder.h" |
#include "WebCoreMemoryInstrumentation.h" |
+#include <public/Platform.h> |
#include <wtf/Assertions.h> |
#include <wtf/MemoryInstrumentationHashMap.h> |
#include <wtf/MemoryInstrumentationHashSet.h> |
@@ -979,6 +981,21 @@ bool DocumentLoader::scheduleArchiveLoad(ResourceLoader* loader, const ResourceR |
return m_archive; |
} |
+bool DocumentLoader::scheduleDataUriLoad(ResourceLoader* loader, const ResourceRequest& request) |
+{ |
+ if (request.url().protocolIsData()) { |
+ String mimetype, charset; |
+ Vector<char> data; |
+ if (ResourceHandle::parseDataUrl(request.url(), mimetype, charset, data) && !data.isEmpty()) { |
+ RefPtr<DataUriResource> resource = DataUriResource::create(SharedBuffer::adoptVector(data), request.url(), mimetype, charset, ResourceResponse(request.url(), mimetype, data.size(), charset, String())); |
+ m_pendingSubstituteResources.set(loader, resource); |
+ deliverSubstituteResourcesAfterDelay(); |
+ return true; |
+ } |
+ } |
+ return false; |
+} |
+ |
void DocumentLoader::setTitle(const StringWithDirection& title) |
{ |
if (m_pageTitle == title) |