summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2015-01-05 14:03:59 +0100
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-01-13 15:28:39 +0100
commita4a5e663d6409fc19296c7329bdb0456fa7f54ec (patch)
treee3588a9eae154dfb8a5df9545ed2817769cacc9d
parent2371d57eff6bf39abc483dcb321324d11b2a15bc (diff)
downloadqtwebkit-a4a5e663d6409fc19296c7329bdb0456fa7f54ec.tar.gz
Add support authenticated POST requests
To resend a POST request on authentication challenge we need to be able to reset the FormData IODevice so it can give the same data again to QtNetwork. Task-number: QTBUG-43628 Change-Id: Icc0a25f45dee80240501b18f1e3f61af022552d1 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
-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;
};
}