diff options
Diffstat (limited to 'Source/WebCore/platform/network/qt/QNetworkReplyHandler.h')
-rw-r--r-- | Source/WebCore/platform/network/qt/QNetworkReplyHandler.h | 70 |
1 files changed, 52 insertions, 18 deletions
diff --git a/Source/WebCore/platform/network/qt/QNetworkReplyHandler.h b/Source/WebCore/platform/network/qt/QNetworkReplyHandler.h index 8c9bd08..61694d6 100644 --- a/Source/WebCore/platform/network/qt/QNetworkReplyHandler.h +++ b/Source/WebCore/platform/network/qt/QNetworkReplyHandler.h @@ -34,56 +34,90 @@ QT_END_NAMESPACE namespace WebCore { class ResourceHandle; +class ResourceResponse; + +class QNetworkReplyWrapper : public QObject { + Q_OBJECT +public: + QNetworkReplyWrapper(QNetworkReply*, QObject* parent = 0); + ~QNetworkReplyWrapper(); + + QNetworkReply* reply() const { return m_reply; } + QNetworkReply* release(); + + QUrl redirectionTargetUrl() const { return m_redirectionTargetUrl; } + QString encoding() const { return m_encoding; } + QString advertisedMimeType() const { return m_advertisedMimeType; } + +Q_SIGNALS: + void finished(); + void metaDataChanged(); + void readyRead(); + void uploadProgress(qint64 bytesSent, qint64 bytesTotal); + +private Q_SLOTS: + void receiveMetaData(); + void didReceiveFinished(); + +private: + void resetConnections(); + + QNetworkReply* m_reply; + QUrl m_redirectionTargetUrl; + + QString m_encoding; + QString m_advertisedMimeType; +}; class QNetworkReplyHandler : public QObject { Q_OBJECT public: - enum LoadMode { - LoadNormal, - LoadDeferred, - LoadResuming, - LoadSynchronously + enum LoadType { + AsynchronousLoad, + SynchronousLoad }; - QNetworkReplyHandler(ResourceHandle *handle, LoadMode); - void setLoadMode(LoadMode); + QNetworkReplyHandler(ResourceHandle*, LoadType, bool deferred = false); + void setLoadingDeferred(bool); - QNetworkReply* reply() const { return m_reply; } + QNetworkReply* reply() const { return m_replyWrapper ? m_replyWrapper->reply() : 0; } void abort(); QNetworkReply* release(); -signals: - void processQueuedItems(); - public slots: void finish(); void sendResponseIfNeeded(); void forwardData(); - void sendQueuedItems(); void uploadProgress(qint64 bytesSent, qint64 bytesTotal); private: void start(); void resetState(); String httpMethod() const; + void resumeDeferredLoad(); + void redirect(ResourceResponse&, const QUrl&); + bool wasAborted() const { return !m_resourceHandle; } + QNetworkReply* sendNetworkRequest(); - QNetworkReply* m_reply; + QNetworkReplyWrapper* m_replyWrapper; ResourceHandle* m_resourceHandle; bool m_redirected; bool m_responseSent; bool m_responseContainsData; - LoadMode m_loadMode; + LoadType m_loadType; QNetworkAccessManager::Operation m_method; QNetworkRequest m_request; + bool m_deferred; + // defer state holding - bool m_shouldStart; - bool m_shouldFinish; - bool m_shouldSendResponse; - bool m_shouldForwardData; + bool m_hasStarted; + bool m_callFinishOnResume; + bool m_callSendResponseIfNeededOnResume; + bool m_callForwardDataOnResume; int m_redirectionTries; }; |