Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1998)

Unified Diff: WebCore/platform/network/FormData.cpp

Issue 11192017: ********** WebCore blob hacking (Closed) Base URL: http://svn.webkit.org/repository/webkit/trunk/Source/
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « WebCore/platform/network/FormData.h ('k') | WebCore/platform/network/chromium/BlobRegistryProxy.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « WebCore/platform/network/FormData.h ('k') | WebCore/platform/network/chromium/BlobRegistryProxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698