Holger Hans Peter Freyther <zecke@selfish.org>
[WebKit-https.git] / WebCore / platform / network / qt / QNetworkReplyHandler.h
index 913c5d8..935009d 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2007 Trolltech ASA
+    Copyright (C) 2007-2008 Trolltech ASA
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
 #include <QNetworkRequest>
 #include <QNetworkAccessManager>
 
+#include "FormData.h"
+
+QT_BEGIN_NAMESPACE
+class QFile;
 class QNetworkReply;
+QT_END_NAMESPACE
 
 namespace WebCore {
 
@@ -42,6 +47,8 @@ public:
 
     void abort();
 
+    QNetworkReply *release();
+
 private slots:
     void finish();
     void sendResponseIfNeeded();
@@ -56,6 +63,37 @@ private:
     bool m_responseSent;
     QNetworkAccessManager::Operation m_method;
     QNetworkRequest m_request;
+    uint   m_startTime;
+};
+
+// Self destructing QIODevice for FormData
+//  For QNetworkAccessManager::put we will have to gurantee that the
+//  QIODevice is valid as long finished() of the QNetworkReply has not
+//  been emitted. With the presence of QNetworkReplyHandler::release I do
+//  not want to gurantee this.
+class FormDataIODevice : public QIODevice {
+    Q_OBJECT
+public:
+    FormDataIODevice(FormData*);
+    ~FormDataIODevice();
+
+    void setParent(QNetworkReply*);
+    bool isSequential() const;
+
+protected:
+    qint64 readData(char*, qint64);
+    qint64 writeData(const char*, qint64);
+
+private Q_SLOTS:
+    void slotFinished();
+
+private:
+    void moveToNextElement();
+
+private:
+    Vector<FormDataElement> m_formElements;
+    QFile* m_currentFile;
+    qint64 m_currentDelta;
 };
 
 }