diff options
| -rw-r--r-- | Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp | 25 | ||||
| -rw-r--r-- | Source/WebCore/platform/network/qt/QNetworkReplyHandler.h | 4 |
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; }; } |
