Index: WebCore/platform/network/FormData.cpp |
=================================================================== |
--- WebCore/platform/network/FormData.cpp (revision 140218) |
+++ WebCore/platform/network/FormData.cpp (working copy) |
@@ -23,9 +23,6 @@ |
#include "FormData.h" |
-#include "BlobData.h" |
-#include "BlobRegistryImpl.h" |
-#include "BlobURL.h" |
#include "Chrome.h" |
#include "ChromeClient.h" |
#include "Document.h" |
@@ -41,6 +38,12 @@ |
#include <wtf/Encoder.h> |
#include <wtf/MemoryInstrumentationVector.h> |
+#if PLATFORM(CHROMIUM) |
+// Chromium doesn't store blob data in renderer processes. |
+#else |
+#include "BlobRegistryImpl.h" |
+#endif |
+ |
namespace WebCore { |
inline FormData::FormData() |
@@ -147,12 +150,12 @@ |
break; |
#if ENABLE(BLOB) |
case FormDataElement::encodedBlob: |
- formData->m_elements.append(FormDataElement(e.m_url)); |
+ formData->m_elements.append(FormDataElement(e.m_blobUUID, e.m_optionalBlobDataHandle)); |
break; |
#endif |
#if ENABLE(FILE_SYSTEM) |
- case FormDataElement::encodedURL: |
- formData->m_elements.append(FormDataElement(e.m_url, e.m_fileStart, e.m_fileLength, e.m_expectedFileModificationTime)); |
+ case FormDataElement::encodedFileSystemURL: |
+ formData->m_elements.append(FormDataElement(e.m_fileSystemURL, e.m_fileStart, e.m_fileLength, e.m_expectedFileModificationTime)); |
break; |
#endif |
} |
@@ -185,9 +188,9 @@ |
m_elements.append(FormDataElement(filename, start, length, expectedModificationTime, shouldGenerateFile)); |
} |
-void FormData::appendBlob(const KURL& blobURL) |
+void FormData::appendBlob(const String& blobUUID, PassRefPtr<BlobDataHandle> optionalBlobDataHandle) |
{ |
- m_elements.append(FormDataElement(blobURL)); |
+ m_elements.append(FormDataElement(blobUUID, optionalBlobDataHandle)); |
} |
#endif |
#if ENABLE(FILE_SYSTEM) |
@@ -279,7 +282,7 @@ |
} |
#if ENABLE(BLOB) |
else |
- appendBlob(value.blob()->url()); |
+ appendBlob(value.blob()->uuid(), value.blob()->blobDataHandle()); |
#endif |
} else |
appendData(value.data().data(), value.data().length()); |
@@ -320,9 +323,12 @@ |
} |
#if ENABLE(BLOB) |
-static void appendBlobResolved(FormData* formData, const KURL& url) |
+#if PLATFORM(CHROMIUM) |
+// Chromium doesn't store blob data in renderer processes. |
+#else |
+static void appendBlobResolved(FormData* formData, const String& blobUUID) |
{ |
- RefPtr<BlobStorageData> blobData = static_cast<BlobRegistryImpl&>(blobRegistry()).getBlobDataFromURL(KURL(ParsedURLString, url)); |
+ RefPtr<BlobStorageData> blobData = static_cast<BlobRegistryImpl&>(blobRegistry()).getBlobDataFromUUID(blobUUID); |
if (!blobData) |
return; |
@@ -335,7 +341,7 @@ |
else if (blobItem.type == BlobDataItem::File) |
formData->appendFileRange(blobItem.path, blobItem.offset, blobItem.length, blobItem.expectedModificationTime); |
else if (blobItem.type == BlobDataItem::Blob) |
- appendBlobResolved(formData, blobItem.url); |
+ appendBlobResolved(formData, blobItem.blobDataHandle->uuid()); |
else |
ASSERT_NOT_REACHED(); |
} |
@@ -369,13 +375,14 @@ |
else if (element.m_type == FormDataElement::encodedFile) |
newFormData->appendFileRange(element.m_filename, element.m_fileStart, element.m_fileLength, element.m_expectedFileModificationTime, element.m_shouldGenerateFile); |
else if (element.m_type == FormDataElement::encodedBlob) |
- appendBlobResolved(newFormData.get(), element.m_url); |
+ appendBlobResolved(newFormData.get(), element.m_blobUUID); |
else |
ASSERT_NOT_REACHED(); |
} |
return newFormData.release(); |
} |
-#endif |
+#endif // CHROMIUM |
+#endif // BLOB |
void FormData::generateFiles(Document* document) |
{ |
@@ -431,7 +438,7 @@ |
info.addMember(m_data); |
info.addMember(m_filename); |
#if ENABLE(BLOB) |
- info.addMember(m_url); |
+ info.addMember(m_blobUUID); |
#endif |
info.addMember(m_generatedFilename); |
} |
@@ -462,13 +469,13 @@ |
#if ENABLE(BLOB) |
case FormDataElement::encodedBlob: |
- encoder.encodeString(element.m_url.string()); |
+ encoder.encodeString(element.m_blobUUID); |
return; |
#endif |
#if ENABLE(FILE_SYSTEM) |
- case FormDataElement::encodedURL: |
- encoder.encodeString(element.m_url.string()); |
+ case FormDataElement::encodedFileSystemURL: |
+ encoder.encodeString(element.m_fileSystemURL.string()); |
encoder.encodeInt64(element.m_fileStart); |
encoder.encodeInt64(element.m_fileLength); |
encoder.encodeDouble(element.m_expectedFileModificationTime); |
@@ -499,7 +506,7 @@ |
case FormDataElement::encodedFile: |
#if ENABLE(FILE_SYSTEM) |
- case FormDataElement::encodedURL: |
+ case FormDataElement::encodedFileSystemURL: |
#endif |
{ |
element.m_type = static_cast<FormDataElement::Type>(type); |
@@ -527,8 +534,8 @@ |
return false; |
#if ENABLE(FILE_SYSTEM) |
- if (type == FormDataElement::encodedURL) |
- element.m_url = KURL(KURL(), filenameOrURL); |
+ if (type == FormDataElement::encodedFileSystemURL) |
+ element.m_fileSystemURL = KURL(KURL(), filenameOrURL); |
else |
#endif |
element.m_filename = filenameOrURL; |
@@ -544,10 +551,11 @@ |
#if ENABLE(BLOB) |
case FormDataElement::encodedBlob: |
element.m_type = FormDataElement::encodedBlob; |
- String blobURLString; |
- if (!decoder.decodeString(blobURLString)) |
+ String blobUUID; |
+ if (!decoder.decodeString(blobUUID)) |
return false; |
- element.m_url = KURL(KURL(), blobURLString); |
+ element.m_blobUUID = blobUUID; |
+ // Note we're not setting the optionalBlobDataHandle here. |
return true; |
#endif |