summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp25
-rw-r--r--Source/WebCore/platform/network/qt/QNetworkReplyHandler.h4
2 files changed, 21 insertions, 8 deletions
diff --git a/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp b/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
index f884a9fdb..91c5e00de 100644
--- a/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
+++ b/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
@@ -50,10 +50,11 @@ FormDataIODevice::FormDataIODevice(FormData* data)
, m_currentDelta(0)
, m_fileSize(0)
, m_dataSize(0)
+ , m_formData(data)
{
setOpenMode(FormDataIODevice::ReadOnly);
- prepareFormElements(data);
+ prepareFormElements();
prepareCurrentElement();
computeSize();
}
@@ -63,19 +64,29 @@ FormDataIODevice::~FormDataIODevice()
delete m_currentFile;
}
-void FormDataIODevice::prepareFormElements(FormData* formData)
+bool FormDataIODevice::reset()
{
- if (!formData)
- return;
+ if (m_currentFile)
+ m_currentFile->close();
- RefPtr<FormData> formDataRef(formData);
+ m_currentDelta = 0;
+ m_formElements = m_formData->elements();
+
+ prepareCurrentElement();
+ return true;
+}
+
+void FormDataIODevice::prepareFormElements()
+{
+ if (!m_formData)
+ return;
#if ENABLE(BLOB)
- formDataRef = formDataRef->resolveBlobReferences();
+ m_formData = m_formData->resolveBlobReferences();
#endif
// Take a deep copy of the FormDataElements
- m_formElements = formDataRef->elements();
+ m_formElements = m_formData->elements();
}
diff --git a/Source/WebCore/platform/network/qt/QNetworkReplyHandler.h b/Source/WebCore/platform/network/qt/QNetworkReplyHandler.h
index bf838fdc2..8b31d3a1c 100644
--- a/Source/WebCore/platform/network/qt/QNetworkReplyHandler.h
+++ b/Source/WebCore/platform/network/qt/QNetworkReplyHandler.h
@@ -179,13 +179,14 @@ public:
bool isSequential() const;
qint64 getFormDataSize() const { return m_fileSize + m_dataSize; }
+ virtual bool reset();
protected:
qint64 readData(char*, qint64);
qint64 writeData(const char*, qint64);
private:
- void prepareFormElements(FormData*);
+ void prepareFormElements();
void moveToNextElement();
qint64 computeSize();
void openFileForCurrentElement();
@@ -197,6 +198,7 @@ private:
qint64 m_currentDelta;
qint64 m_fileSize;
qint64 m_dataSize;
+ RefPtr<FormData> m_formData;
};
}